列表(list)
底层 是双向循环链表
在Redis中,我们可以把list完成栈、队列、阻塞队列
所有的list命令都是用 l 开头的
lpush rpush lrange
从list的左边或者右边插入值,格式: lpush(从左边) key value rpush(从右边) key value
lrange获取指定范围的值,格式: lrange key start stop
lpop rpop
从列表的左边或者右边移除值,格式: lpop key rpop key
lindex
获取指定下标的值,格式: lindex key index
llen
获取列表中的元素个数,格式: llen key
lrem
移除列表中的元素,格式: lrem key count value
ltrim
截取列表的值,格式: ltrim key start stop
rpoplpush
移除列表中最后一个元素,将它添加到另一个列表中,格式: rpoplpush key1 key2
lset
根据下标替换列表中的值,格式: lset key index value
linsert
在列表中插入值,格式: linsert key before|after value new_value
小结
他实际上是一个链表,before or after, left,right都可以插入值
如果key不存在,创建新的链表
如果key存在,新增内容
如果移除了所有的值,空链表,也代表不存在
在两遍插入或者改动值,效率最高!中间元素,相对来说效率会低一点
队列: LPOP RPUSH
栈: LPOP LPUSH
集合 set
set中的值是不能重复的!!!
sadd
给set中添加值,格式: sadd key value1 value2 …
smembers
获取set中的所有值,格式: smembers key
sismember
判断某个值是否在set中,格式: sismember key value
scard
获取set中元素的个数,格式: scard key
srem
删除set中的值,格式: srem key value1 value2…
srandmember
从set中获取随机值,格式: srandmember key count
我们可以用它去完成抽奖!!!
spop
随机删除指定个数个元素,格式: spop key count
smove
将指定的元素从一个set中移动到另一个set中,格式: smove set1 set2 value
数字集合类:
差集
交集
并集
应用
抖音中,A用户将所有关注的人放在一个set集合中,将他的粉丝放在一个集合中。
可以实现共同关注,共同爱好,二度好友(推荐好友)等。
哈希 hash
可以将哈希看成是一个Map集合,key-value中的value是一个map集合
hset hget
设置或者获取一个hash的值,格式: hset key field1 value1 hget key field
hmset hmget
设置或者获取hash的值,格式: hmset key field1 value1 field2 value2 … hmget key field1
field2…
getall
获取hash中的所有值
hdel
删除指定field的hash键值对,格式: hdel key field
hlen
获取hash的键值对的个数,格式: hlen key
hexists
判断hash中的字段是否存在,格式: hexists key field
hkeys hvals
获取hash中所有的字段或者值,格式: hkeys key hvals
hincrby
给hash中指定字段的值加上一个增量
hsetnx
如果不存在,则添加,如果存在,则失败,格式: hsetnx key field value
应用:hash中存储经常变更的值:比如用户信息: user : name-value,age-value,sex-value
hash更适合对象的存储,String更加适合字符串存储
有序集合 zset
zadd
添加一个值,格式: zadd key scores value
zrange
获取zset中一个范围的值,格式: zrange key start stop
zrangebyscore
将zset中的值按照score从小到大排序输出,格式: zrangebyscore key min max
zrem
移除zset中指定的元素,格式: zrem key value
zcard
查看zset中的元素个数,格式: zcard key
zcount
根据score的值统计在给定区间的元素个数,格式: zcount key min max