服务器之家:专注于服务器技术及软件下载分享
分类导航

Mysql|Sql Server|Oracle|Redis|MongoDB|PostgreSQL|Sqlite|DB2|mariadb|Access|数据库技术|

服务器之家 - 数据库 - Redis - redis操作学习记录

redis操作学习记录

2020-05-14 15:07随风行云 Redis

这篇文章主要介绍了redis操作,记录总结了Redis客户端、服务器、string、hash、list、发布/订阅、事务等相关概念、原理与操作技巧,需要的朋友可以参考下

本文实例总结了redis操作。分享给大家供大家参考,具体如下:

相关内容:

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

 

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

  • 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
  • redis操作学习记录

断开连接: quit

客户端连接测试:

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

切换数据库:

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

 


服务端操作:

 

数据持久化:

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:只在键已经存在时,才对键进行设置操作
    • redis操作学习记录
  • setnx key value :只有在 key 不存在时设置 键值对
  • setex key seconds value:设置键值对的过期时间为seconds 秒
  • setbit key offset value: 设置对应二进制的offset位为value【每个字符占八位,从高位到低位为0-7】redis操作学习记录
  • setrange key offset value :用  value  参数覆盖给定  key  所储存的字符串值,从偏移量  offset  开始。redis操作学习记录
  • mset key value [key value ...]:同时设置一个或多个  key‐value  对。redis操作学习记录
  • msetnx key value [key value ...]:当所有键都不存在时,同时设置一个或多个  key‐value  对。只要一个给定  key  已存在, 全部设置操作都会取消(原子性)
  • append key value:如果  key  已经存在并且是一个字符串, append命令将  value  追加到  key  原来的值的末尾。如果  key  不存在, append就简单地将给定  key  设为  value  ,就像执行  SET key value  一样。 如果key不是一个字符串,将报错。redis操作学习记录

 

 

获取string:

  • get key :获取对应键的键值
  • mget key [key ...]:获取多个键的值
  • getrange key start end:返回  key  中字符串值的子字符串,字符串的截取范围为[start , end]
  • getset key newvalue:返回key的值,并设置key的值为newvalue
  • getbit key offset: 获取字符串所代表的二进制位的offset数值redis操作学习记录
  • 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(异或)redis操作学习记录redis操作学习记录
    • 当 bitop 处理不同长度的字符串时,较短的那个字符串所缺少的部分会被看作  0  。空的  key  也被看作是包含  0  的字符串序列

 

 

补充:

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

 

 

 


Hash操作:

 

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

redis操作学习记录

 

设置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,偶数行为valueredis操作学习记录
  • hmget key field [field…]:返回哈希表  key  中,一个或多个给定域的值,只返回值value
  • hvals key:获取哈希表中的所有field的值,只返回value redis操作学习记录
  • hkeys key:获取哈希表中的所有field,只返回field
  • hscan key cursor [MATCH pattern] [COUNT count]:用于增量地迭代hash
    • cursor是 迭代的开始索引,第一次为0,迭代中第一行返回值为下一次继续迭代的索引,如果为0代表迭代完毕
    • Match pattenrn是 匹配field的模式 ,不是value也不是key!!
    • count count是此次迭代的数量
    • redis操作学习记录
  • 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中左边为头,右边为尾

 redis操作学习记录

设置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  不是列表类型,返回一个错误。redis操作学习记录

 

获取list:

  • lpop key移除并返回列表  key  的头元素
  • rpop key移除并返回列表  key  的尾元素。
  • blpop是 LPOP 命令的阻塞版本,当给定列表内没有任何元素可供弹出的时候,连接将被 BLPOP 命令阻塞,直到等待超时或发现可弹出元素为止(可以使用另外一个客户端来添加元素)。当给定多个  key  参数时,按参数  key  的先后顺序依次检查各个列表,弹出第一个非空列表的头元素。redis操作学习记录
  • 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:移除并返回集合中的一个随机元素。 {C}

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

 

其他操作:

  • sscan key cursor [MATCH pattern] [COUNT count]: 用于增量地迭代set
    • cursor是 迭代的开始索引,第一次为0,迭代中第一行返回值为下一次继续迭代的索引,如果为0代表迭代完毕
    • Match pattenrn是 匹配set中元素的模式
    • count count是此次迭代的数量
    • redis操作学习记录
  • 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命令,可以对已有成员的分数进行增加操作。redis操作学习记录

 

获取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]:{C}
    • cursor是 迭代的开始索引,第一次为0,迭代中第一行返回值为下一次继续迭代的索引,如果为0代表迭代完毕
    • Match pattenrn是 匹配sort set中元素的模式
    • count count是此次迭代的数量
    • redis操作学习记录{C}

 


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的监视

 

 

redis操作学习记录redis操作学习记录

 

 


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

希望本文所述对大家Redis数据库程序设计有所帮助。

原文链接:https://www.cnblogs.com/progor/p/8540246.html

延伸 · 阅读

精彩推荐
  • Redis《面试八股文》之 Redis十六卷

    《面试八股文》之 Redis十六卷

    redis 作为我们最常用的内存数据库,很多地方你都能够发现它的身影,比如说登录信息的存储,分布式锁的使用,其经常被我们当做缓存去使用。...

    moon聊技术8182021-07-26
  • Redis详解三分钟快速搭建分布式高可用的Redis集群

    详解三分钟快速搭建分布式高可用的Redis集群

    这篇文章主要介绍了详解三分钟快速搭建分布式高可用的Redis集群,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,...

    万猫学社4502021-07-25
  • Redisredis缓存存储Session原理机制

    redis缓存存储Session原理机制

    这篇文章主要为大家介绍了redis缓存存储Session原理机制详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪...

    程序媛张小妍9252021-11-25
  • RedisRedis 6.X Cluster 集群搭建

    Redis 6.X Cluster 集群搭建

    码哥带大家完成在 CentOS 7 中安装 Redis 6.x 教程。在学习 Redis Cluster 集群之前,我们需要先搭建一套集群环境。机器有限,实现目标是一台机器上搭建 6 个节...

    码哥字节15752021-04-07
  • Redis关于Redis数据库入门详细介绍

    关于Redis数据库入门详细介绍

    大家好,本篇文章主要讲的是关于Redis数据库入门详细介绍,感兴趣的同学赶快来看一看吧,对你有帮助的话记得收藏一下,方便下次浏览...

    沃尔码6982022-01-24
  • Redis如何使用Redis锁处理并发问题详解

    如何使用Redis锁处理并发问题详解

    这篇文章主要给大家介绍了关于如何使用Redis锁处理并发问题的相关资料,文中通过示例代码介绍的非常详细,对大家学习或者使用Redis具有一定的参考学习...

    haofly4522019-11-26
  • RedisRedis集群的5种使用方式,各自优缺点分析

    Redis集群的5种使用方式,各自优缺点分析

    Redis 多副本,采用主从(replication)部署结构,相较于单副本而言最大的特点就是主从实例间数据实时同步,并且提供数据持久化和备份策略。...

    优知学院4082021-08-10
  • RedisRedis Template实现分布式锁的实例代码

    Redis Template实现分布式锁的实例代码

    这篇文章主要介绍了Redis Template实现分布式锁,需要的朋友可以参考下 ...

    晴天小哥哥2592019-11-18