Skip to content

操作指令

webdes
原文

字符串(strings)类型

字符串最大长度为 512M

sh
set key value: #添加一条String类型数据

get key: #获取一条String类型数据

mset key1 value1 key2 value2: #添加多条String类型数据

mget key1 key2:# 获取多条String类型数据

incr key: #自增(+1)

incrby key step: #按照步长(step)自增

decr key:# 自减(-1)

decrby key step: # 按照步长(step)递减

del key: # 删除

散列(hashes)

散列相当于Java中的HashMap,内部是无序字典。实现原理跟HashMap一致。一个哈希表有多个节点,每个节点保存一个键值对。

sh
# 设置属性
hset keyname field1 value1 field2 value2
# 获取某个属性值
hget keyname field
# 获取所有属性值
hgetall keyname
# 删除某个属性
hdel keyname field
# 获取属性个数
hlen keyname
# 按照步长自增/自减某个属性(该属性必须是数字)
hincrby keyname field step

列表(lists)

类型介绍

Redis中的lists相当于Java中的LinkedList,实现原理是一个双向链表(其底层是一个快速列表),即可以支持反向查找和遍历,更方便操作。插入和删除操作非常快,时间复杂度为 O(1),但是索引定位很慢,时间复杂度为 O(n)。

sh
# 左进
lpush key value1 value2 value3...

# 左出
lpop key

# 右进
rpush key value1 value2 value3...

# 右出
rpop key

# 从左往右读取 start和end是下标
lrange key start end

集合(sets)

类似Java的HashSet

sh
# 添加内容
sadd key value1 value2

# 查询key里所有值
smembers key

# 移除key里某个value
serm key value

# 随机移除某个value
spop key

# 返回两个set的并集
sunion key1 key2

# 返回两个set的并差集
sdiff key1 key2

# 返回两个set的交集
sinter key1 key2

有序集合(sorted sets)

类型介绍

sorted sets是Redis类似于 SortedSet 和 HashMap 的结合体,一方面它是一个 set,保证了内部 value 的唯一性,另一方面它可以给每个 value 赋予一个 score,代表这个 value 的排序权重。内部使用HashMap和跳跃表(SkipList)来保证数据的存储和有序,HashMap里放的是成员到score的映射,而跳跃表里存放的是所有的成员,排序依据是HashMap里存的score,使用跳跃表的结构可以获得比较高的查找效率,并且在实现上比较简单。sorted sets中最后一个 value 被移除后,数据结构自动删除,内存被回收。

sh
# 添加元素
zadd key score value [score value...]

# 获取集合的值并按照score从小到大排列, 最小的是最上面
zrange key start end 

# 返回有序集 key 中,所有 score 值介于 min 和 max 之间(包括等于 min 或 max )的成员。有序集成员按 score 值递增(从小到大)次序排列, 最小的是最上面
zrangeByScore key score_min score_max 

# 删除
zrem key value 

# 获取key的集合有多少元素
zcard key

# 统计分数从小到大有多少元素 (闭区间)
zcount key score_min score_max 

# 获取value所在位置(从小到大排序,最小的是0)
zrank key value 

# 获取value所在的位置(从大到小排列, 最大的是0)
zrevrank key value