相关内容:

虽然有参考文档,而且记忆太多也是耗脑,但学习的时候还是想要有个系统划分开知识点的文档,即使不要求去细致记忆,但划分开知识块后脑子里的印象才会更清晰,所以就有了这个博文。

主要是将各种命令进行划分成不同的功能归属

  • redis的介绍:
  • 客户端连接操作
  • 服务端操作
  • string操作
  • hash操作
  • list操作
  • set操作
  • sort set操作
  • key操作
  • 发布\订阅
  • 事务

参考:w3school

首发时间:2018-03-10 15:36


Redis的介绍:

  • Redis是一种非关系型数据库 ,是一个高性能的key-value数据库 ,设置的值也是以键值对存在的
  • Redis支持数据的持久化,可以将内存中的数据保存在磁盘中,重启的时候可以再次加载进行使用
  • Redis不仅仅支持简单的key-value类型的数据,同时还提供list,set,zset,hash等数据结构的存储。
  • Redis还支持数据备份
  • Redis的所有操作都是原子性的
  • Redis支持五种数据类型:string(字符串),hash(哈希),list(列表),set(集合)及zset(sorted
    set:有序集合)。

客户端连接操作:

  • 启动redis客户端连接:

    • redis-cli [-h host] [-p port] [-a password ]
      • host是服务端IP
      • port是服务端端口
      • password是连接密码
      • 端口port 默认是6379
  • 断开连接: quit

  • 客户端连接测试:

    • auth:如果设置了密码,但连接的时候没有使用-a password,那么可以在连接完成后使用auth password来解锁,解锁之后才能使用其他 Redis 命令
    • echo message:打印一个特定的信息  message  ,测试时使用。
    • ping [message]:使用客户端向 Redis 服务器发送一个  PING  ,如果服务器运作正常的话,会返回一个  PONG  。通常用于测试与服务器的连接是否仍然生效,或者用于测量延迟值。如果设置了message,那么返回值为message。

  • 切换数据库

    • select index:切换到指定的数据库,数据库索引号  index  用数字值指定,以 0 作为起始索引值。默认使用 0 号数据库。可以从标识看出当前是哪个数据库。

服务端操作:

  • 数据持久化:

    • snapshot快照持久化:保存的是所有数据,默认情况下,自动执行快照持久化,保存文件为.rbd

      • 如何打开snapshot记录功能:
        • 默认打开的
      • 如何使用:
        • 使用save:SAVE 命令执行一个同步保存操作,将当前 Redis 实例的所有数据快照(snapshot)以 RDB 文件的形式保存到硬盘。一般来说,在生产环境很少执行 SAVE 操作,因为它会阻塞所有客户端,保存数据库的任务通常由BGSAVE 命令异步地执行。然而,如果负责保存数据的后台子进程不幸出现问题时, SAVE 可以作为保存数据的最后手段来使用。
        • 使用bgsave:与save不同的是会在后台进行备份,不会堵塞当前所有客户端。
      • 如何恢复数据: 使用snapshot方式保存会有一个.rbd文件(config get dbfilename可获知是哪个文件),保存完毕后将这个文件复制到外面一份,当需要恢复的时候,关闭redis服务,将.rbd复制回来覆盖,重启redis服务即可
    • AOF日志记录型持久化:保存的是操作日志

      • 如何打开aof记录功能: config set appendonly “yes”
      • 如何使用: 开启aof功能后,会自动记录执行的命令
      • 如何恢复:与rdb恢复数据方式相同,会有一个.aof文件(config get appendfilename可获知是哪个文件,如果不行就看配置文件),保存完毕后将这个文件复制到外面一份,当需要恢复的时候,关闭redis服务,将.aof复制回来覆盖,重启redis服务即可
    • 如果rdb文件,和aof文件都存在,优先用“AOF"来恢复数据【这个要谨慎使用,有可能因为这个而发生”删库“】
    • 恢复时rdb和aof,rdb恢复的快
  • 客户端管理:

    • 断开客户端:CLIENT KILL ip:port   【关闭地址为  ip:port  的客户端。】

    • 设置客户端名称:CLIENT SETNAME connection­name 【为当前连接分配一个名字。】

    • 获取客户端名称:CLIENT GETNAME 【返回 CLIENT SETNAME 命令为连接设置的名字。创建的连接默认是没有名字的】

    • 获取客户端连接信息:CLIENT LIST   【返回所有连接到服务器的客户端信息和统计数据。】

  • 服务端配置管理:

    • 获取配置:config get config_setting_name【config_setting_name是配置项名】

    • 设置新配置:config set config_setting_name new_config_value 【new_config_value是新的配置值】

  • 数据管理:

    • 清空所有数据:flushall

    • 清空当前数据库中的所有 key:flushdb

  • 其他:

    • 获取时间:time 【返回当前服务器时间。第一个字符串是当前时间(以 UNIX 时间戳格式表示),而第二个字符串是当前这一秒钟已经逝去的微秒数。】


String操作:

String是字符串的意思,在redis中就是表示“设置变量的值为一个字符串”

  • 设置string:

    • set key value [EX seconds] [PX milliseconds] [NX|XX]   :设置键值对,无论key是否存在,存在则覆盖
      • key:就是设置的键名
      • value:对应的键的值,默认为字符串,可以加双引号,也可以不加
      • ex:设置键的过期时间为  seconds  秒
      • px:与ex不同的是代表多少毫秒失效
      • nx:只在键不存在时,才对键进行设置操作 【当使用setnx设置值时默认有nx】
      • xx:只在键已经存在时,才对键进行设置操作
    • setnx key value :只有在 key 不存在时设置 键值对
    • setex key seconds value:设置键值对的过期时间为seconds 秒
    • setbit key offset value: 设置对应二进制的offset位为value【每个字符占八位,从高位到低位为0-7】
    • setrange key offset value :用  value  参数覆盖给定  key  所储存的字符串值,从偏移量  offset  开始。
    • mset key value [key value ...]:同时设置一个或多个  key‐value  对。
    • msetnx key value [key value ...]:当所有键都不存在时,同时设置一个或多个  key‐value  对。只要一个给定  key  已存在, 全部设置操作都会取消(原子性)
    • append key value:如果  key  已经存在并且是一个字符串, append命令将  value  追加到  key  原来的值的末尾。如果  key  不存在, append就简单地将给定  key  设为  value  ,就像执行  SET key value  一样。 如果key不是一个字符串,将报错。
  • 获取string:

    • get key :获取对应键的键值
    • mget key [key ...]:获取多个键的值
    • getrange key start end:返回  key  中字符串值的子字符串,字符串的截取范围为[start , end]
    • getset key newvalue:返回key的值,并设置key的值为newvalue
    • getbit key offset: 获取字符串所代表的二进制位的offset数值
    • strlen  key :获取key对应字符串的长度
    • bitcount key [start end]:对应对应字符串的二进制中为1的数量
  • 其他操作:

    • decr key: 当字符串为数字时,将 key 中储存的数字值减一,其余时报错。如果  key 不存在,那么 key 的值会先被初始化为 0  ,然后再执行 decr 操作。
    • decrby key decrement:与decr key不同的是指定减少数量为decrement。如果  key  不存在,那么  key  的值会先被初始化为  0  ,然后再执行 decrby 操作。
    • incr key:当字符串为数字时,将  key  中储存的数字值增一,其余时报错。如果  key  不存在,那么  key  的值会先被初始化为  0  ,然后再执行 incr操作。
    • incrby key increment:当字符串为数字时,将  key  所储存的值加上增量  increment  。如果  key  不存在,那么  key  的值会先被初始化为  0  ,然后再执行incrby 命令。
    • incrbyfloat key increment:与incrby key increment不同的是,增长的值为浮点数。
    • bitop operation destkey key [key ...]: 对一个或多个保存二进制位的字符串或十六进制字符串或普通字符串  key  进行位元操作,并将结果保存到  destkey  上。
      • operation可以是and,or,not,xor(异或)
      • 当 bitop 处理不同长度的字符串时,较短的那个字符串所缺少的部分会被看作  0  。空的  key  也被看作是包含  0  的字符串序列
  • 补充:

    • m前缀的操作是具有原子性的,只有一个失败就报错,比如mset设置多个值,只要一个设置失败,那么就会报错,并全部设置失败。
    • 并且redis是有数据类型的,操作会检测数据类型,除去一些能“覆盖”原变量,忽略原变量类型的操作,其他操作遇到不符合的类型都会报错

Hash操作:

redis中的hash相当于key只是一个索引值,指向一个哈希表,它的值是一个域值对(field-value)区域

  • 设置hash:

    • hset key field value:将哈希表  key  中的域  field  的值设为  value  。如果  key  不存在,一个新的哈希表被创建并进行hset操作。如果域  field  已经存在于哈希表中,旧值将被覆盖。
    • hsetnx key field value:将哈希表  key  中的域  field  的值设置为  value  ,当且仅当域  field  不存在。
    • hmset key field value [field value ...]:同时将多个  field‐value  (域­值)对设置到哈希表  key  中。
  • 获取hash:

    • hget key field:获取哈希表中的field的值,只返回值value
    • hgetall key:获取哈希表中的所有field的值,返回值中,奇数行为field,偶数行为value
    • hmget key field [field…]:返回哈希表  key  中,一个或多个给定域的值,只返回值value
    • hvals key:获取哈希表中的所有field的值,只返回value
    • hkeys key:获取哈希表中的所有field,只返回field
    • hscan key cursor [MATCH pattern] [COUNT count]:用于增量地迭代hash
      • cursor是 迭代的开始索引,第一次为0,迭代中第一行返回值为下一次继续迭代的索引,如果为0代表迭代完毕
      • Match pattenrn是 匹配field的模式 ,不是value也不是key!!
      • count count是此次迭代的数量
    • hlen key:返回哈希表  key  中域的数量。
    • hexists key field:查看哈希表  key  中,给定域  field  是否存在。
  • 其他操作:

    • hdel key field [field ...]:删除哈希表  key  中的一个或多个指定域,不存在的域将被忽略。
    • hincrby key field increment:如果哈希表中对应的field为数字,那么为哈希表  key  中的域  field  的值加上增量  increment  。如果  key  不存在,一个新的哈希表被创建并执行 HINCRBY 命令。如果域  field  不存在,那么在执行命令前,域的值被初始化为  0  。【注,increment可以为负数,所以没有hdecr】
    • hincrbyfloat key field increment:如果哈希表中对应的field为数字,那么为哈希表  key  中的域  field  的值加上浮点数增量  increment  。如果  key  不存在,一个新的哈希表被创建并执行 HINCRBY 命令。如果域  field  不存在,那么在执行命令前,域的值被初始化为  0  。【注,值和增量可以为指数符号如5.0e3】

List操作:

代表key的值为一个列表,可以有多个元素

List中左边为头,右边为尾

  • 设置list:

    • lpush key value [value ...]   : 将一个或多个值  value  插入到列表  key  的表头,多个值插入时,后面插入的值在表头,也就是说会从左边把一个个值往右边压,最后面的值作为表头。
    • rpush key value [value ...]  :将一个或多个值  value  插入到列表  key  的表尾(最右边)。多个值插入时,最后面的的值作为表尾。
    • rpushx key value  :将值  value  插入到列表  key  的表尾,当且仅当  key  存在并且是一个列表,否则不执行任何操作。
    • lrange key start stop  :  返回列表  key  中指定区间[start,stop](这是一个[闭区间])内的元素。可以用-1来代表最后一个元素
    • lset key index value  :   将列表  key  下标为  index  的元素的值设置为  value  。当  index  参数超出范围,或对一个空列表(  key  不存在)进行 LSET 时,返回一个错误。
    • linsert key before|after pivot value 将值  value  插入到列表  key  当中,位于值  pivot (注意pivot是一个值value) 之前(before)或之后(after)。当  pivot  不存在于列表  key  时,不执行任何操作。当  key  不存在时,  key  被视为空列表,不执行任何操作。如果  key  不是列表类型,返回一个错误。
  • 获取list:

    • lpop key移除并返回列表  key  的头元素
    • rpop key移除并返回列表  key  的尾元素。
    • blpop是 LPOP 命令的阻塞版本,当给定列表内没有任何元素可供弹出的时候,连接将被 BLPOP 命令阻塞,直到等待超时或发现可弹出元素为止(可以使用另外一个客户端来添加元素)。当给定多个  key  参数时,按参数  key  的先后顺序依次检查各个列表,弹出第一个非空列表的头元素。
    • brpop :   是 RPOP 命令的阻塞版本,当给定列表内没有任何元素可供弹出的时候,连接将被 BRPOP 命令阻塞,直到等待超时或发现可弹出元素为止(可以使用另外一个客户端来添加元素)。当给定多个  key  参数时,按参数  key  的先后顺序依次检查各个列表,弹出第一个非空列表的尾元素。
    • rpoplpush source destination :   将source的尾元素取出来放到destination的表头
    • lindex key index  :    返回列表  key  中,下标为  index  的元素。如果  key  不是列表类型,返回一个错误。
    • llen key :   返回列表  key  的长度。如果  key  不存在,则  key  被解释为一个空列表,返回  0  .如果  key  不是列表类型,返回一个错误。
  • 其他操作:

    • ltrim key start stop :  对一个列表进行修剪(trim),就是说,让列表只保留指定区间内(为闭区间)的元素,不在指定区间之内的元素都将被删除。

补充:

  • m前缀的操作是具有原子性的,只有一个失败就报错,比如mset设置多个值,只要一个设置失败,那么就会报错,并全部设置失败。
  • 并且redis是有数据类型的,操作会检测数据类型,除去一些能“覆盖”原变量,忽略原变量类型的操作,其他操作遇到不符合的类型都会报错

Set操作:

代表key的值为一个集合,集合中元素不可以重复

  • 设置set:

    • sadd key member [member ...]  :    将一个或多个  member  元素加入到集合  key  当中,已经存在于集合的  member  元素将被忽略。假如  key  不存在,则创建一个只包含  member  元素作成员的集合。当  key  不是集合类型时,返回一个错误。
  • 获取set:

    • scard key  :  返回集合的元素个数
    • spop key:移除并返回集合中的一个随机元素。

    • smembers key  :返回集合  key  中的所有成员。不存在的  key  被视为空集合。
    • srandmember key [count] :  如果命令执行时,只提供了  key  参数,那么返回集合中的count个随机元素。
  • 如果  count  为正数,且小于集合基数,那么命令返回一个包含  count  个元素的数组,数组中的元
    素各不相同。如果  count  大于等于集合基数,那么返回整个集合。
    如果  count  为负数,那么命令返回一个数组,数组中的元素可能会重复出现多次,而数组的长度
    为  count  的绝对值。

  • 其他操作:

    • sscan key cursor [MATCH pattern] [COUNT count]: 用于增量地迭代set
      • cursor是 迭代的开始索引,第一次为0,迭代中第一行返回值为下一次继续迭代的索引,如果为0代表迭代完毕
      • Match pattenrn是 匹配set中元素的模式
      • count count是此次迭代的数量
    • smove source destination member:将  member  元素从  source  集合移动到  destination  集合。如果  source  集合不存在或不包含指定的  member  元素,则 SMOVE 命令不执行任何操作,仅返回  0  。否则,  member  元素从  source  集合中被移除,并添加到  destination  集合中去。
    • sdiff key [key ...]:返回给定集合之间的差集
    • sdiffstore destination key [key ...]:返回给定集合之间的差集,并存储到destination中,如果  destination  集合已经存在,则将其覆盖。destination  可以是  key  本身。
    • sinter key [key ...]:返回所有给定集合的交集
    • sinter destination key [key ...]:返回给定集合之间的交集,并存储到destination中,如果  destination  集合已经存在,则将其覆盖。destination  可以是  key  本身。
    • sismember key member:判断  member  元素是否集合  key  的成员。
    • srem key member [member ...]:移除集合  key  中的一个或多个  member  元素,不存在的  member  元素会被忽略。当  key  不是集合类型,返回一个错误。
    • sunion key [key…] :返回所有给定集合的并集。不存在的  key  被视为空集。
    • sunionstore destination key [key…] :返回所有给定集合的并集,不存在的  key  被视为空集,将返回的结果保存到  destination  集合.如果  destination  已经存在,则将其覆盖。destination  可以是  key  本身。

补充:

redis是有数据类型的,操作会检测数据类型,除去一些能“覆盖”原变量,忽略原变量类型的操作,其他操作遇到不符合的类型都会报错


Sort Set操作:

Sort set代表是一个有序集合,score决定着元素的顺序,一般score小的在前面

  • 设置sort set:

    • zadd key [NX|XX] [CH] [INCR] score member [score member ...]: 将一个或多个  member  元素及其  score  值加入到有序集  key  当中。
      • scrore是元素的权重,决定着元素的顺序
      • nx:是member不存在才添加,已存在则不作操作
      • xx:是member已经存在才添加
      • ch:修改返回值为发生变化的成员总数,原始是返回新添加成员的总数
      • incr:当ZADD指定这个选项时,成员的操作就等同zincrby命令,可以对已有成员的分数进行增加操作。
  • 获取sort set:

    • zrange key start stop [WITHSCORES] :返回有序集  key  中,指定区间内的成员。其中成员的位置按  score  值递增(从小到大)来排序。
      • withscores代表是否同时返回score
    • zrangebyscore key min max [WITHSCORES] [LIMIT offset count]:返回有序集  key  中,所有  score  值介于  min  和  max  之间(包括等于  min  或  max  )的成员。有序集成员按score  值递增(从小到大)次序排列。
    • zrevrange key start stop [WITHSCORES]:返回有序集  key  中,指定区间内的成员。
    • ZREVRANGEBYSCORE key max min [WITHSCORES] [LIMIT offset count]:返回有序集  key  中,  score  值介于  max  和  min  之间(默认包括等于  max  或  min  )的所有的成员。有序集成员按  score  值递减(从大到小)的次序排列。
    • zrank key member:返回有序集  key  中成员  member  的排名。
    • zcard key:返回有序集合的元素个数
    • zscore key member:返回有序集  key  中,成员  member  的  score  值。如果  member  元素不是有序集  key  的成员,或  key  不存在,返回  nil  。
    • zrevrank key member:返回有序集  key  中成员  member  的排名。其中有序集成员按  score  值递减(从大到小)排序。排名以  0  为底,也就是说,  score  值最大的成员排名为  0  。

    • zcount key min max:返回有序集  key  中,  score  值在[min,max]之间的成员的数量。

  • 其他操作:

    • zrem key member [member ...]:移除有序集  key  中的一个或多个成员,不存在的成员将被忽略。当  key  存在但不是有序集类型时,返回一个错误。
    • zincrby key increment member:为有序集  key  的成员  member  的  score  值加上增量  increment  。可以通过传递一个负数值  increment  ,让  score  减去相应的值,比如  ZINCRBY key ‐5 member  ,就是让member  的  score  值减去  5  。当  key  不存在,或  member  不是  key  的成员时,  ZINCRBY key increment member  等同于ZADD key increment member  。当  key  不是有序集类型时,返回一个错误。score  值可以是整数值或双精度浮点数。
    • ZREMRANGEBYRANK key start stop:移除有序集  key  中,指定排名(rank)区间内的所有成员。区间分别以下标参数  start  和  stop  指出,包含  start  和  stop  在内。下标参数  start  和  stop  都以  0  为底,也就是说,以  0  表示有序集第一个成员,以  1  表示有序集第二个成员,以此类推。你也可以使用负数下标,以  ‐1  表示最后一个成员,  ‐2  表示倒数第二个成员,以此类推。
    • ZREMRANGEBYSCORE key min max:移除有序集  key  中,所有  score  值介于  min  和  max  之间(包括等于  min  或  max  )的成员。
    • zunionstore destination numkeys key [key ...] [weights weight [weight ...]][AGGREGATE SUM|MIN|MAX]:计算给定的一个或多个有序集的并集,其中给定  key  的数量必须以  numkeys  参数指定,并将该并集(结果集)储存到  destination  。默认情况下,结果集中某个成员的  score  值是所有给定集下该成员  score  值之 和 。
    • zinterstore destination numkeys key [key ...] [WEIGHTS weight [weight ...]] [AGGREGATE SUM|MIN|MAX]:计算给定的一个或多个有序集的交集,其中给定  key  的数量必须以  numkeys  参数指定,并将该交集(结果集)储存到  destination  。默认情况下,结果集中某个成员的  score  值是所有给定集下该成员  score  值之和.
    • zscan key cursor [MATCH pattern] [COUNT count]:
      • cursor是 迭代的开始索引,第一次为0,迭代中第一行返回值为下一次继续迭代的索引,如果为0代表迭代完毕
      • Match pattenrn是 匹配sort set中元素的模式
      • count count是此次迭代的数量

key操作:

  • 查询键:

    • exists key:检测键是否存在

    • type key:检测键对应的值的类型

    • keys pattern:查找所有符合给定模式  pattern  的  key  。比如 keys *代表获取所有键

    • ttl key:以秒为单位,返回给定  key  的剩余生存时间

    • PTTL key:以毫秒为单位返回  key  的剩余生存时间

    • RANDOMKEY:从当前数据库中随机返回(不删除)一个  key  。

  • 删除键:

    • del key:当键存在时,删除键
  • 键的排序:

    • sort key [BY pattern] [LIMIT offset count] [GET pattern [GET pattern ...]] [ASC | DESC]
      [ALPHA] [STORE destination]:
      返回或保存给定列表、集合、有序集合  key  中经过排序的元素。排序默认以数字作为对象,值被解释为双精度浮点数,然后进行比较。
  • 键的设置:

    • EXPIRE key seconds:为给定  key  设置生存时间,当  key  过期时(生存时间为  0  ),它会被自动删除。
    • EXPIREAT key timestamp:EXPIREAT 的作用和 EXPIRE 类似,都用于为  key  设置生存时间。不同在于 EXPIREAT 命令接受的时间参数是 UNIX 时间戳(unix timestamp)。
    • PEXPIREAT key milliseconds­timestamp:它以毫秒为单位设置  key  的过期 unix 时间戳
    • RENAME key newkey:将  key  改名为  newkey  。当  key  和  newkey  相同,或者  key  不存在时,返回一个错误。当  newkey  已经存在时, RENAME 命令将覆盖旧值。
    • RENAMENX key newkey:当且仅当  newkey  不存在时,将  key  改名为  newkey  。当  key  不存在时,返回一个错误。
    • DUMP key:序列化给定  key  ,并返回被序列化的值,使用 restore 命令可以将这个值反序列化为 Redis 键。序列化生成的值有以下几个特点:它带有 64 位的校验和,用于检测错误, RESTORE 在进行反序列化之前会先检查校验和。值的编码格式和 RDB 文件保持一致。RDB 版本会被编码在序列化值当中,如果因为 Redis 的版本不同造成 RDB 格式不兼容,那么Redis 会拒绝对这个值进行反序列化操作。序列化的值不包括任何生存时间信息。
    • restore key ttl serialized­value [REPLACE]:反序列化给定的序列化值,并将它和给定的  key  关联。参数  ttl  以毫秒为单位为  key  设置生存时间;如果  ttl  为  0  ,那么不设置生存时间。RESTORE 在执行反序列化之前会先对序列化值的 RDB 版本和数据校验和进行检查,如果 RDB 版本不相同或者数据不完整的话,那么 RESTORE 会拒绝进行反序列化,并返回一个错误。如果键  key  已经存在, 并且给定了  REPLACE  选项, 那么使用反序列化得出的值来代替键  key  原有的值; 相反地, 如果键  key  已经存在, 但是没有给定  REPLACE  选项, 那么命令返回一个错误。
    • PERSIST key:移除给定  key  的生存时间
  • 键的移动:

    • migrate host port key destination­db timeout [COPY] [REPLACE]:将  key  原子性地从当前实例传送到目标实例的指定数据库上,一旦传送成功,  key  保证会出现在目标实例上,而当前实例上的  key  会被删除。这个命令是一个原子操作,它在执行的时候会阻塞进行迁移的两个实例,直到以下任意结果发生:迁移成功,迁移失败,等到超时。
    • move key db:将当前数据库的  key  移动到给定的数据库  db  当中。如果当前数据库(源数据库)和给定数据库(目标数据库)有相同名字的给定  key  ,或者  key  不存在于当前数据库,那么  MOVE  没有任何效果


发布/订阅:

订阅可以使多个客户端等待同一信息,发布可以使服务端向多个特定客户端发送信息

  • 就像收音机一样,只要收音机调到指定的频道channel,就可以收听到电台的信息
  • 而电台可以向所有收听它的收音机发送信息
  • 新的用户,不会收听到之前的消息
  • 订阅频道:

    • psubscirbe pattern [pattern ...]:客户端订阅一个或多个符合给定模式的频道
    • subscirbe channel [channel ...]:订阅给定的一个或多个频道的信息。
    • 【上述两个的区别就是pattern可以模式匹配】
  • 发送消息:

    • publish channel message:将信息  message  发送到指定的频道  channel  。返回值是收到message的订阅者数量
  • 退订频道:

    • unpsubscirbe [channel [channel ...]]:指示客户端退订给定的频道。
    • punsubscirbe [pattern [pattern ...]]:指示客户端退订所有给定模式。
    • 【上述两个的区别就是pattern可以模式匹配】
  • 频道查询:

    • pubsub numpat:客户端订阅的所有模式的数量总和。

    • pubsub channels [pattern]:列出当前的活跃频道。活跃频道指的是那些至少有一个订阅者的频道, 订阅模式的客户端不计算在内。

    • pubsub numsub [channel­1 ... channel­N]:返回给定频道的订阅者数量, 订阅模式的客户端不计算在内。


事务

  • 开启事务:

    • multi:标记一个事务块的开始。事务块内的多条命令会按照先后顺序被放进一个队列当中,最后由 EXEC 命令原子性(atomic)地执行。
  • 监控:

    • watch key [key …]:监视一个(或多个) key ,如果在事务执行exec之前这个(或这些) key 被其他命令所改动,那么事务将被打断。
    • unwatch:取消 WATCH 命令对所有 key 的监视。
  • 执行事务块:

    • exec:执行所有事务块内的命令。
  • 取消事务:

    • discard:取消事务,放弃执行事务块内的所有命令。同时也会取消watch对所有key的监视


想知道更多,请参考官方文档:https://redis.io/commands 中文文档:http://www.redis.cn/documentation.html


一文学redis操作(记录向)的更多相关文章

  1. redis 操作记录

    cd opt/redis-3.2.1/ cd src ./redis-cli get token:xxx del token:xxx set token:xxx

  2. Redis Cluster高可用集群在线迁移操作记录【转】

    之前介绍了redis cluster的结构及高可用集群部署过程,今天这里简单说下redis集群的迁移.由于之前的redis cluster集群环境部署的服务器性能有限,需要迁移到高配置的服务器上.考虑 ...

  3. Redis Cluster 4.0高可用集群安装、在线迁移操作记录

    之前介绍了redis cluster的结构及高可用集群部署过程,今天这里简单说下redis集群的迁移.由于之前的redis cluster集群环境部署的服务器性能有限,需要迁移到高配置的服务器上.考虑 ...

  4. Redis Cluster高可用集群在线迁移操作记录

    之前介绍了redis cluster的结构及高可用集群部署过程,今天这里简单说下redis集群的迁移.由于之前的redis cluster集群环境部署的服务器性能有限,需要迁移到高配置的服务器上.考虑 ...

  5. Redis使用记录-相关资料汇总

    1 redis在centos上的安装 http://www.cnblogs.com/hanyinglong/p/5036558.html 2 redis在windows上的可视化GUI工具 https ...

  6. Gitlab备份和恢复操作记录

    前面已经介绍了Gitlab环境部署记录,这里简单说下Gitlab的备份和恢复操作记录: 1)Gitlab的备份目录路径设置 [root@code-server ~]# vim /etc/gitlab/ ...

  7. python 全栈开发,Day101(redis操作,购物车,DRF解析器)

    昨日内容回顾 1. django请求生命周期? - 当用户在浏览器中输入url时,浏览器会生成请求头和请求体发给服务端 请求头和请求体中会包含浏览器的动作(action),这个动作通常为get或者po ...

  8. 转载:Gitlab备份和恢复操作记录

    转载:Gitlab备份和恢复操作记录 包含了备份和数据恢复的操作记录,实验可行 前面已经介绍了Gitlab环境部署记录,这里简单说下Gitlab的备份和恢复操作记录: 1)Gitlab的备份目录路径设 ...

  9. redis 学习记录

    http://www.yiibai.com/redis/redis_quick_guide.html Redis 是一款依据BSD开源协议发行的高性能Key-Value存储系统(cache and s ...

随机推荐

  1. python实现stack并测试

    栈(stack)又名堆栈,它是一种运算受限的线性表.其限制是仅允许在表的一端进行插入和删除运算. 这一端被称为栈顶,相对地,把另一端称为栈底.向一个栈插入新元素又称作进栈.入栈或压栈,它是把新 元素放 ...

  2. 昕有灵犀-xyFS私有文件云存储OSS服务

    本工程为本人开发的开源项目,地址: https://gitee.com/475660/xyFS 介绍: 一站式企业私有文件服务.针对软件开发时提供的文件存储系统,对文件上传.下载.分类.分组.审计.统 ...

  3. Liferay7 BPM门户开发之25: Liferay7应用程序配置(APPLICATION CONFIGURATION)

    首先有几个概念需要明确.1.第一个概念是这里的应用程序配置不是写XML之类的配置文件,是类似字典的类型化配置这意味着应用程序配置不只是一个字符串键值对的列表.值还可以有类型,如整数列表,字符串列表,一 ...

  4. nrf52832 SDK 15.3.0 Flash 操作

    debug中遇到的问题: 1,写入数据,读出来不对 2,看之前被人写的代码发现,读flash直接用的标准C库函数:memcpy,但是,写用的专门的flash写接口.所以,我这里两个疑问: A,写fla ...

  5. 1 认识Jquery

    一 代码风格和变量风格 1 链式操作风格 : (1)对同一对象不超三个操作的可以写在一行 (2)对于同一个对象的较多操作,建议每行写一个操作 (3)对于多个对象的少量操作,可以每个对象写一行,涉及子元 ...

  6. IIS服务器多站点 的 https证书使用443端口 解决方案

    默认情况一个服务器的IIS只能绑定一个HTTPS也就是443端口 要实现多个站点对应HTTPS只能更改IIS配置 首先把每个站点分配个不同端口,如443.444.445…(证书一定要是多域的) 然后重 ...

  7. C# TableLayoutPanel使用方法

    一.利用TableLayoutPanel类展示表格,以10行5列为例 第1步:在前台创建一个panel,使TableLayoutPanel对象填充其内部. 第2步:创建TableLayoutPanel ...

  8. Visual Studio For MacOS 踩坑记(二)

    Visual Studio For MacOS安装安卓SDK. 系统默认安装了安卓6.0  API23的SDK.  但是我需要安卓7.0的,API24.  遂安装. SDK可以下载成功,但是用Visu ...

  9. C语言第五讲,语句 顺序循环选择.

    C语言第五讲,语句 顺序循环选择. 一丶语句的简明了解 我们知道,在编写C语言程序的时候,代码是顺序执行的. 从上往下执行. 但是我们可以控制流程的. 在控制之前,我们要先熟悉什么是语句. 相比大家学 ...

  10. [译]初试C# 8.0

    原文地址: https://blogs.msdn.microsoft.com/dotnet/2018/12/05/take-c-8-0-for-a-spin/ 初试C# 8.0 昨天我们宣布了Visu ...