Redis命令 | 青训营笔记

60 阅读4分钟

这是我参与「第五届青训营 」伴学笔记创作活动的第 10 天,本次是接着上次对于redis基础执行继续进行学习,对于redis相关数据类型的执行命令进行了学习,包括字符串、哈希、集合等等,同时还了解了redis中的发布和订阅。

3.字符串:

set key value----设置指定key的值

get key---获取指定key的值

getrange key start end---返回key中字符串值的子字符

getset key value---将key的值设置value,并返回key的旧值

getbit key offset 对key所存储的字符串值,获取指定偏移量上的位bit

mget key1[key2...]获取所有(一个或多个)给定key的值

setnx key value---只有在key不存在时设置key的值

4.哈希:

hash是一个string类型的field(字段)和value(值)的映射表,hash适合用于存储对象

hdel key field1[field2]---删除一个或多个哈希表字段

hexists key field---查看哈希表key中,指定的字段是否存在

hget key filed---获取存储在哈希表中指定字段的值

hgetall key---获取在哈希表中执行key的所有字段和值

hkeys key---获取所有哈希表中的字段

hlen key---获取哈希表中字段的数量

hvals key---获取哈希表中所有值

5.列表:

redis列表是简单的字符串列表,按照插入顺序排序。

blpop key1[key2]timeout---移除并获取列表的第一个元素

brpop key1[key2] timeout----移除并获取列表中的最后一个元素

lindex key index---通过索引获取列表中的元素

llen key---获取列表长度

lpop key---移除并获取列表的第一个元素

lpush key value1[value2]---将一个或多个值插入到列表头部

lpushx key value---将一个值插入到已存在的列表头部

6.集合:

redis的set是string类型的无序集合,集合对象的编码可以是intset或者hashtable

sadd key member1[member2]----向集合中添加一个或多个成员

scard key---获取集合的成员数

spop key---移除并返回集合中的一个随机元素

smembers key---返回集合中的所有成员

7.有序集合:

redis有序集合中的每个元素都会关联一个double类型的分数,redis是通过分数来为集合中的成员进行从小到大的排序。(分数可以重复)

zadd key score1 member1[score2 member2]---向有序集合添加一个或多个成员,或者更新已存在成员的分数。

zcard key---获取有序集合的成员数

zrank key member---返回有序集合中指定成员的索引

8.HyperLogLog:

redis HyperLogLog实现基数统计的算法,可以保证在输入元素的数量或者体积非常非常大时,计算基数所需的空间是固定、并且很小的。

但是hyperLogLog只会根据输入元素来计算基数,而不会存储元素本身,所以不能像集合那样输出各个元素。

pfadd key element[element...]---添加指定元素到HyperLogLog中

pfcount key[key...]----返回给定HyperLogLog的基数估算值

9.发布订阅:

redis发布订阅(pub/sub)是一种消息通信模式。

redis client可以订阅任意数量的频道

需要开启两个redis-cli客户端

第一个redis-cli客户端:

subscribe runnoobChat

第二个redis-cli客户端:

publish runoobChat "Redis publish test"

10.redis 事务:

redis事务一次可执行多个命令,具有以下三个重要保证:

  • 批量操作在发送exec命令前被放入队列缓存
  • 收到exec命令后进入事务执行,事务中任意命令执行失败,其余命令仍然被执行
  • 在事务执行过程,其他客户端提交的命令请求不会插入到事务执行命令序列中

事务从开始到执行经历的三个阶段:

  • 开始事务
  • 命令入队
  • 执行事务

单个redis命令的执行是原子性的,但redis没有在事务上增加任何维护原子性的机制,所以redis事务的执行不是原子性的。

discard---取消事务

exec---执行所有事务块内的命令

multi---标记一个事务块的开始

unwatch---取消watch命令对所有key的监视