String
string是redis的字符串类型
常用操作:
GETSET key value : 将指定的key设置为value并返回原先的值。
SETEX key seconds value : 设置key并设置固定的value。
SETNX key value :当key不存在时,设置key的值,
每个String类型的value的占用内存不能超过512M
List
List底层是一个双向链表结构。
Lpush : 左侧推入元素。
Lpop : 左侧弹出元素。
Rpush : 右侧推入元素。
Rpop : 右侧弹出元素。
Lrange : 取出一定范围的元素。
Lindex : 取出指定下标的元素。
Hash
类似于hashMap
由于大hash的扩容是要占用很多时间,需要重新申请数组,单进程的redis很难承受这样的操作,因此采用了渐进式的操作。
字典结构的内部持有了两个hashtable,未扩容时一个table为空,当需要扩容时,会将一个hashtable的值逐步搬到另一个hashtable的值。当搬迁完成时,新的hashtable会成为0号table,而旧的hashtable会成为1号,当下次rehash时,他就成了新的搬迁目标。
发生rehash的时机:
扩容:当hash中的元素等于数组的元素时,也就是hash中的元素个数与数组长度时。 扩容的新数组是 原数组大小的 2 倍 ,如果系统正在做持久化命令,Redis会不去扩容,除非达到了数组长度的5倍,会进行强制扩容。
缩容:当hash中的元素小于数组中10%时。
Set
相当于HashSet,不能用重复的数据,
Zset
相当于一个可以打分的set的集合,继承了set的特点,在设置值时可以给他一个分数。可以根据分数排序展示。
BITMAP
通过一个bit位的值来表示某个元素对应的值或者状态(只能0或1)
SETBIT key offset value : 设置key的某个索引的值
一般可以用作签到的统计
如:
setbit 日期 用户的id 是否签到(0或者1)