Skip to content

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图片或者序列化的对象。

bash
#设置与获取(单个)
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亿个元素)。

bash
# 在左边或者右边进行插入
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)。底层使用的是哈希表,元素是唯一的,但是没有顺序。

bash
# 添加元素
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。

bash
# 向有序集合添加一个或多个成员,或者更新已存在成员的分数
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>>

bash
#添加元素
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