redis键的基本操作

redis是什么?
  redis开源的,构建于内存的数据结构的nosql数据库。常被用于数据存储,缓存处理和消息处理。

redis的优势?
  1、极高的读写能力
  2、丰富的数据类型
  3、原子性操作
  4、支持主从热备

redis的使用场景?
  1、登录之后的会话存储,相较于使用memcached作为缓存数据库,数据更加安全
  2、排行榜/计数器,比如一些秀场类的项目,常常会会有一些前多少名的主播排名,还有一些文章阅读量的技术,或者新浪微博的点赞数等
  3、作为消息队列,比如celery就可以使用redis作为中间人
  4、好友关系,微博的好友关系使用redis实现

redis键的基本操作命令:
1、keys pattern
  功能:查询所有符合匹配模式的所有的键名
  pattern匹配模式的用法:
    ?:任意一个字符
    *:任意个字符
    [ae]:a或e
    [^ae]:除了a和e
    [a-e]:a-e范围内的一个字符
    [^a-e]:除了a-e的一个字符
    [1-11]:1-11范围内的一个字符
    [^1-11]:除了1-11的一个字符
  返回值:返回所有符合匹配模式的所有的键名
  exp:keys *

2、exists key [key...]
  功能:检查redis中给定的key键(可以为一个或者多个)是否存在
  返回值:因为key可以不存在也可以重复,返回这些key键在redis中存在的数量,key可以重复,返回值统计数量不去重
  exp:exists key1 key2 ...

3、SCAN cursor [MATCH pattern] [COUNT count]
  功能:scan命令每次被调用是会返回新的游标cursor和本次执行命令列出的所有key,用户在下次迭代的时候可以使用新的游标cursor作为scan命令的游标参数,以此来延续之前的迭代过程,直到返回的新的cursor为0的时候,最终列出所有的符合pattern匹配模式的key。这种方式相较于使用keys pattern的方式查询key麻烦许多,但是当你的key非常多的时候,使用scan方式效率上明显会提升。
  pattern的用法:与keys pattern命令中的pattern用法一致
  count参数:代表本次扫描想要列出的key的个数,但是实际上会列出的key的个数并不一定会是count参数的值,这个参数是不精准的
  返回值:遍历符合pattern的所有key数据,这些key可能会有重复,需要在客户端程序应用中进行判断
  exp:sacn 0
      sacn 0 match key?
      scan 0 match key[1-8] count 5

4、randomkey
  功能:随机返回redis数据库中的一个key
  返回值:一个键名
  exp:randomkey

5、type key
  功能:查询一个key键的类型
  返回值:如果key存在,返回存储在该键上数据的数据类型的表现形式,不同的类型共有string,list,set,zset,hash五种。如果key不存在,则返回none。
  exp:type key1

6、object subcommand [arguments [arguments ...]]
  功能:从内部查看给定key的redis对象(key所对应的具体对象)
  subcommand子命令:
    object refcount key:返回当前key对应的对象的引用次数
    object idletime key:返回当前key对应的对象的空闲时间
    object encoding key:返回当前key对应的对象的数据类型,如‘int‘,‘quicklist‘,‘embstr‘等等
  返回值:refcount/idletime返回数字,encoding返回redis对象的编码类型
  注意:如果某个对象的encoding为‘int‘,并且这个对象的值在0-9999之间,那么他的refcount引用次数会一直为2147483647,而其他的类型或者不在该范围内的数据则会返回具体的引用次数。
  exp: object refcount key1
     object encoding key1
     object idletime key1

7、rename key newkey
  功能:给key重命名为newkey,如果newkey已经存在,则key所指向的数据会覆盖已存在的newkey的数据
  返回值:1、成功则返回OK
      2、如果被更名的key在redis中不存在,则会报错。
  exp: rename username name

8、renamenx key newkey
  功能:当且仅当newkey不存在时给key重命名为newkey
  返回值:1、旧名称key在redis中不存在,则会报错
      2、重命名成功则返回1

      3、新名称newkey已经存在于redis中则返回0
  exp: renamenx username name

9、touch key [key...]
  功能:触碰一下key(可以为多个),把key的最后访问时间变为当前时间,当然这个对象的空闲时间就会变成0。
  返回值:因为key可以不存在也可以重复,返回值为实际touch到的key的数量(key存在且重复不回去重数量)
  exp:
    touch username
    object idletime username

10、del key [key...]
  功能:删除key,可以是多个,属于阻塞式删除
  返回值:如果key不存在,则返回零,如果多个key,则返回实际删除的key的个数,这里相较于exists和touch的返回值,如果key重复,在返回值计算数量时会去重返回
  exp:del username
      del key1 key2 username

11、unlink key [key...]
  功能:删除key,可以是多个,属于非阻塞式删除,用法与del相同,但相对于del,效率更高
  返回值:如果key不存在,则返回零,如果多个key,则返回实际删除的key的个数,这里相较于exists和touch的返回值,如果key重复,在返回值计算数量时会去重返回
  exp:unlink username
      unlink key1 key2 username

12、expire key seconds
  功能:为给定的key设定多少秒后过期(如果该给定的key已经设置了过期时间,则为更改过期时间操作)。如果设置的seconds小于0等于0,则该键key立刻会被删除。
  返回值:1、设置成功返回1
      2、否则key不存在或者设置失败返回0
  exp:expire age 60

13、expireat key timestamp
  功能:为key设定具体的过期时间点,时间点为Unix时间戳
  返回值:1、成功则返回1
      2、当key不存在或者没办法设置过期时间则返回0
  exp:expireat username 1600000000

14、pexpire key milliseconds
  功能:与expire一致,只不过是值得数值为毫秒
  返回值:1、设置成功返回1
      2、当key不存在或者没办法设置过期时间则返回0
  exp:pexpire age 60000

15、pexpireat key milliseconds-timestamp
  功能:与pexpire功能一致,只不过设置的时间戳为毫秒级别
  返回值:1、成功则返回1
      2、当key不存在或者没办法设置过期时间则返回0
  exp:pexpireat username 1600000000000

16、ttl key
  功能:返回以秒为单位的key的剩余过期时间
  返回值:1、当key不存在的时候,返回-2
      2、当key存在但是没有设置过期时间,返回-1
      3、否则,以秒为单位,返回key的剩余过期时间
  exp:ttl username

17、pttl key
  功能:与ttl一样,只不过返回的剩余过期时间是以毫秒为单位的值

18、persist key
  功能:移除给定的key的生存时间,将这个key转换成持久的
  返回值:1、移除成功返回1
      2、key不存在或者未设置过期时间返回0
  exp:persist age

19、dump key
  功能:序列化给定的key并返回序列化的结果,便于传输等操作,序列化的结果不包含任何过期时间相关信息
  返回值:1、如果成功则返回被序列化的结果(特殊格式的字符串)
      2、如果key不存在则返回nil
  exp: dump username

20、restore key ttl serialized-value [REPLACE]
  功能:反序列化给定的序列化字符串,将得到的结果和给定的key关联,并且设置过期时长为以毫秒为单位的ttl(如果ttl为0则代表新生成的key永久有效)。如果key已经存在,此时如果使用replace则会覆盖原来的key,如果未使用replace,则会报错
  返回值:1、如果成功则返回OK
      2、给定的key已经存在,但是未使用replace参数,会报错

21、sort key [BY pattern] [LIMIT offset count] [GET pattern [GET pattern ...]] [ASC|DESC] [ALPHA] [STORE destination]
  功能:返回或者保存给定的列表,集合,有序集合中经过排序的结果。排序默认以数字为对象,值被解释为双精度浮点数,然后进行比较
  返回值:1、未使用store参数,则返回排序过后的列表形式的结果
      2、如果使用了store参数,则把排序结果保存到给定的destination键里,并返回结果元素数量。如果destination为已经存在的key,则原来的key的内容将会被覆盖
  exp:lpush nums 1 4 21 3 21 43 20
      sort nums store newkey
      sort nums desc store newkey limit 2 3

22、move key db
  功能:相同实例之间的不同库之间的数据迁移,将当前数据库的key移动到指定数据库db当中。如果目标数据库存在该key,或者当前数据库不存在该key,那么move没有任何效果。注意这个操作是移动不是复制。
返回值:如果移动成功,则返回1。如果没有move效果,则返回0
  exp:move username 1

23、migrate host port key| destination-db timeout [COPY] [REPLACE] [KEYS key]
  功能:多个实例之间的数据迁移,将key原子性的从当前实例移动到目标实例的指定数据库上,一旦传送成功,则会保证key出现在目标实例指定的数据库上,而当前库中的key将被删除。timeout参数为以毫秒为单位的时间超时时间,如果超时则会传送失败。如果目标实例的指定库里面有该key,此时如果使用replace,目标实例上的该key将会被覆盖,否则将会传送失败。因为该操作是原子性的,他在执行的时候会阻塞正在迁移的两个实例直到发生以下时间,迁移成功,迁移失败,迁移超时。注意如果使用copy参数,则会是复制,原实例中的key将会被保留。如果没使用copy,则就是移动。
如果想要移动多个key,那么key参数可以传递一个‘ ‘占位,然后添加keys参数即可

  exp:migrate 192.168.12.133 6379 username 0 2000 copy replace

      migrate 192.168.12.133 6379 "" 0 3000 copy replace key1 key2 key3

原文地址:https://www.cnblogs.com/limaomao/p/9750750.html

时间: 2024-10-20 14:47:25

redis键的基本操作的相关文章

Redis 键(key) 讲解 - Redis 教程

Redis 键命令用于管理 redis 的键. 语法 Redis 键命令的基本语法如下: redis 127.0.0.1:6379> COMMAND KEY_NAME 实例 redis 127.0.0.1:6379> SET w3ckey redis OK redis 127.0.0.1:6379> DEL w3ckey (integer) 1 在以上实例中 DEL 是一个命令, w3ckey 是一个键. 如果键被删除成功,命令执行后输出 (integer) 1,否则将输出 (integ

Redis 键(key)相关的命令及其它命令的查看地址

Redis 键(key) Redis 键命令用于管理 redis 的键. 语法 Redis 键命令的基本语法如下: redis 127.0.0.1:6379> COMMAND KEY_NAME 实例: 在以上实例中 DEL 是一个命令, runoobkey 是一个键. 如果键被删除成功,命令执行后输出 (integer) 1,否则将输出 (integer) 0 下面给大家列举几个常用的跟键相关的命令: Redis DEL 命令 Redis DEL 命令用于删除已存在的键.不存在的 key 会被忽

Redis 键空间通知

[Redis 键空间通知] 键空间通知使得客户端可以通过订阅频道或模式, 来接收那些以某种方式改动了 Redis 数据集的事件. 以下是一些键空间通知发送的事件的例子: 所有修改键的命令. 所有接收到 LPUSH 命令的键. 0 号数据库中所有已过期的键. 事件通过 Redis 的订阅与发布功能(pub/sub)来进行分发, 因此所有支持订阅与发布功能的客户端都可以在无须做任何修改的情况下, 直接使用键空间通知功能. 因为 Redis 目前的订阅与发布功能采取的是发送即忘(fire and fo

Redis键

Redis的keys命令用于管理键.使用Redis的keys命令语法如下所示: 语法 redis 127.0.0.1:6379> COMMAND KEY_NAME 例子 redis 127.0.0.1:6379> SET yiibai redis OK redis 127.0.0.1:6379> DEL yiibai (integer) 1 在上面的例子中DEL是命令,而yiibai是键.如果键被删除那么输出该命令将是 (integer) 1,否则它是 (integer) 0 Redis

Redis键管理

Redis键管理 Redis 键命令用于管理 redis 的键. 语法 Redis 键命令的基本语法如下: redis 127.0.0.1:6379> COMMAND KEY_NAME redis 127.0.0.1:6379> SET w3ckey redis OK redis 127.0.0.1:6379> DEL w3ckey (integer) 1 在以上实例中 DEL 是一个命令, w3ckey 是一个键. 如果键被删除成功,命令执行后输出 (integer) 1,否则将输出

Redis 键(key)

Redis 键(key) Redis 键命令用于管理 redis 的键. 语法 Redis 键命令的基本语法如下: redis 127.0.0.1:6379> COMMAND KEY_NAME 实例 redis 127.0.0.1:6379> SET runoobkey redis OK redis 127.0.0.1:6379> DEL runoobkey (integer) 1 在以上实例中 DEL 是一个命令, runoobkey 是一个键. 如果键被删除成功,命令执行后输出 (i

Redis键(Key)

Redis 键(key) Redis 键命令用于管理 redis 的键. 语法 Redis 键命令的基本语法如下: redis 127.0.0.1:6379> COMMAND KEY_NAME 实例 127.0.0.1:6379> SET NoSQL0 redis OK 127.0.0.1:6379> DEL NoSQL0 (integer) 1 127.0.0.1:6379> 在以上实例中 DEL 是一个命令, runoobkey 是一个键. 如果键被删除成功,命令执行后输出 (

redis 键命令

Redis 键(key)命令 Redis 键命令用于管理 redis 的键. 语法 Redis 键命令的基本语法如下: redis 127.0.0.1:6379> COMMAND KEY_NAME 实例 redis 127.0.0.1:6379> SET runoob redis OK redis 127.0.0.1:6379> DEL runoob (integer) 1 在以上实例中 DEL 是一个命令, runoobkey 是一个键. 如果键被删除成功,命令执行后输出 (integ

Redis键通知机制

Redis键通知机制 一.概念 自从redis2.8以后出了一个新特性,Keyspace Notifications 称为“键空间通知”. 这个特性大概是,凡是实现了Redis的Pub/Sub的客户端,只需要订阅相应Channel,就可以获得对Key操作的一些事件,从而可以处理一些业务. 比如: 1.当你del一个key时,就可以触发一个del事件通知. 2.一个key的失效时间到了,就会触发expire事件通知. 3.对一个库所有key操作,都可以获取通知.比如对0库所有key的操作. 注意事