Redis的五大数据类型与命令 🌟重要
Redis支持五种数据类型:string(字符串),hash(哈希),list(列表),set(集合)及zset(sorted set:有序集合)。
https://github.com/sewenew/redis-plus-plus
string数据类型
string是redis最基本的类型,你可以理解成一个key对应一个value,string 类型的值最大能存储512MB 。
string 类型是二进制安全的。意思是redis的string可以包含任何数据。比如jpg图片或者序列化的对象。
#设置与获取(单个)
set key value
get key
#设置与获取(多个)
mset key1 value1 key2 value2 ...
mget key1 key2 ...
#获取子串getrange
getrange key start end #start代表的是起始位置 end代表的是结束位置 -1代表的是最后一个位置
#设置子串setrange
setrange key offset newValue #从offset位置开始讲k33的value值设置为新值newValue
#累加命令
incr key #每次对key的value加1
incrby key num #每次对key的value加num
list数据类型
双向链表,Redis列表是简单的字符串列表,按照插入顺序排序。你可以添加一个元素到列表的头部(左边)或者尾部(右边)。
一个列表最多可以包含 232 - 1 个元素 (4294967295, 每个列表超过40亿个元素)。
# 在左边或者右边进行插入
lpush key value1 value2 ....
rpush key value1 value2 ...
# 在头部或者尾部进行删除
lpop key
rpop key
# 遍历的命令
lrange key start stop
# list是具备下标的(可以使用下标进行获取与设置)(STL中的list是没有下标的)
lindex key index #index下标是从0开始的
lset key index value #将下标为index的值设置为value
# 在某个元素的前面或者后面插入一个新元素
linsert mylist before 9 1000 #表明在mylist中,元素为9的前面插入一个值1000
# 对一个列表进行修剪(trim),就是说,让列表只保留指定区间内的元素,不在指定区间之内的元素都将被删除。
LTRIM key start stop
set数据类型
Redis的set是String类型的无序集合。集合成员是唯一的,这就意味着集合中不能出现重复的数据。
Redis中集合是通过哈希表实现的,所以添加,删除,查找的复杂度都是O(1)。底层使用的是哈希表,元素是唯一的,但是没有顺序。
# 添加元素
sadd key value1 value2 ...
# 获取成员数量
scard key
# 遍历元素
smembers key
# 判断 member 元素是否是集合 key 的成员
sismember key member
# 将member元素从source集合移动到destination集合
smove ource destination member
# 删除集合中值为value的元素
srem key value
# 在集合中随机选出num个数
srandmember key num
# 移除并返回集合中的一个/num个随机元素
spop key [num]
# 随机删除count个元素
spop key count
# 出现在key1中,但是不在key2中的元素
sdiff key1 key2
# 求交集
sinter key1 key2
# 求并集
sunion key1 key2
sort set数据类型
Redis有序集合和集合一样也是string类型元素的集合,且不允许重复的成员。不同的是每个元素都会关联一个double类型的分数。redis正是通过分数来为集合中的成员进行从小到大的排序。
有序集合的成员是唯一的,但分数(score)却可以重复。
为了将元素进行排序,可以给每个元素一个double类型的分数(权重)也将该数据类型称为zset。
# 向有序集合添加一个或多个成员,或者更新已存在成员的分数
zadd key score1 value1 score2 value2 ...
# 遍历zrange
# 通过索引区间返回有序集合指定区间内的成员,遍历start到stop范围的元素 -1表示的是最后一个元素
zrange key start stop [WITHSCORES]
# 获取有序集合的成员数
zcard key
# 计算在有序集合中指定区间分数的成员数
zcount key min max
# 通过字典区间返回有序集合的成员(分数要一致)
zrangebylex key min max [LIMIT offset count]
# 通过分数返回有序集合指定区间内的成员
zrangebyscore key min max [WITHSCORES] [LIMIT]
# 返回有序集中,成员的分数值
zscore key member
# 返回有序集中指定分数区间内的成员,分数从高到低排序
zrevrangebyscore key max min [WITHSCORES]
hash数据类型
Redis hash 是一个string 类型的field(字段)和value(值)的映射表,hash 特别适合用于存储对象。
注意
Key-value模式不变,但value是一个键值对,可以理解为 map<key, map<key1, value>>
#添加元素
hset key field value
hget key field
#添加多个
hmset key field1 value1 field2 value2 ....
hmget key field1 field2 ...
# 获取在哈希表中指定 key 的所有字段和值
hgetall key
# 获取所有哈希表中的字段
hkeys key
# 获取哈希表中所有值
hvals key
# 获取哈希表中字段的数量
hlen key