redis的键管理

1.键重命名

rename key newkey

  • 重命名之前,如果key已经存在则会value值将会被覆盖
  • 注意:重命名期间会执行del命名删除旧的键,如果key比较大会导致阻塞,谨慎使用
127.0.0.1:6379> get aa
"hello word"

127.0.0.1:6379> rename aa greeting
OK

127.0.0.1:6379> get aa
(nil)

127.0.0.1:6379> get greeting
"hello word"

2.随机返回一个键

randomkey

127.0.0.1:6379> dbsize
(integer) 21

127.0.0.1:6379> randomkey
"age"

127.0.0.1:6379> randomkey
"user_name"

127.0.0.1:6379> randomkey
"a"

3.键过期

  • 无论是使用过期时间还是时间戳,秒级还是毫秒级别,在redis内部都是使用pexpireat
  • 不支持二级数据结构(哈希,列表等)内部元素的过期功能
  • setex是set+expire的组合,不但是原子执行,同时减少了一次网络通讯的时间

expire key seconds

  • 键在seconds秒后过期
  • 返回0,说明key不存在

expireat key timestamp

  • 键在秒级时间戳timestamp后过期

pexpire key milliseconds

  • 毫秒级别过期设置

pexpireat key milliseconds-timestamp

  • 毫秒级别时间戳过期设置
127.0.0.1:6379> expire greeting 3600
(integer) 1

127.0.0.1:6379> ttl greeting
(integer) 3594

##key aa 不存在
127.0.0.1:6379> expire aa 3600
(integer) 0

4.清理过期时间
persist key

127.0.0.1:6379> ttl greeting
(integer) 2944

127.0.0.1:6379> persist greeting
(integer) 1

127.0.0.1:6379> ttl greeting
(integer) -1

5.查看key过期剩余时间
ttl key

  • 返回键剩余的过期时间
  • -1:键没有设置过期时间
  • -2:键不存在,说明已经被删除了

6.迁移键

  • move:内部数据进行数据迁移
  • dump+restore:不同的redis实例之间进行数据迁移
  • migrate:实例间进行数据迁移

1)move key db

2)dump key
restore key ttl value

3)migrate host port key|"" destination-db timeout [copy] [replace] [keys key…]

7.遍历键

1).全量遍历键

  • keys:字符串
  • hgetall:哈希
  • smenbers:集合
  • zrange:有序集合

ps:
1)keys会导致redis阻塞,生产环境不建议使用。
2)hgetall,smembers,zrange可能产生阻塞问题

keys pattern

127.0.0.1:6379> keys h*
1) "h3"
2) "h5"
3) "h4"
4) "h1"
5) "h2"
6) "hello"

##删除h开头的所有key
redis-cli keys h* | xargs redis-cli del
(integer) 6

2).渐进式遍历

  • scan:字符串
  • hscan:哈希
  • sscan:集合
  • zscan:有序集合

scan cursor [match pattern] [count number]

  • cursor:第一次遍历从0开始,每次scan变量完返回当前游标值,直到游标值为0,表示遍历结束
  • match pattern:模糊匹配
  • count number:每次要遍历的键个数,默认10
127.0.0.1:6379> scan 0
1) "17"
2)  1) "mylist"
    2) "user_name"
    3) "myset"
    4) "num"
    5) "myhash"
    6) "b"
    7) "list"
    8) "c"
    9) "set1"
   10) "greeting"
   
127.0.0.1:6379> scan 17
1) "31"
2)  1) "tmp"
    2) "ser2"
    3) "set2"
    4) "union_set"
    5) "set3"
    6) "1"
    7) "rank"
    8) "age"
    9) "myhash2"
   10) "a"

##当前游标返回0,遍历结束   
127.0.0.1:6379> scan 31
1) "0"
2) (empty array)

##设置遍历个数
127.0.0.1:6379> scan 0 match * count 15
1) "3"
2)  1) "mylist"
    2) "user_name"
    3) "myset"
    4) "num"
    5) "myhash"
    6) "b"
    7) "list"
    8) "c"
    9) "set1"
   10) "greeting"
   11) "tmp"
   12) "ser2"
   13) "set2"
   14) "union_set"
   15) "set3"
   16) "1"
   
127.0.0.1:6379> scan 3 match * count 15
1) "0"
2) 1) "rank"
   2) "age"
   3) "myhash2"
   4) "a"

8.删除键

del key

  • 可以删除任何类型的键,del也容易造成阻塞,谨慎使用,如使用del直接删除比较大hash key
  • 返回结果为成功删除键的个数
  • 如果键不存在,则结果返回0

9.查询键是否存在

exists key

  • 存在返回1,不存在返回0
127.0.0.1:6379> exists aa
(integer) 0

10.键总数查询
dbsize

127.0.0.1:6379> dbsize
(integer) 20

11.查询键类型
type key

  • 存在返回对应的类型
  • 不存在返回none
127.0.0.1:6379> type a
string

127.0.0.1:6379> type myhash
hash

127.0.0.1:6379> type ser2
set

127.0.0.1:6379> type rank
zset

127.0.0.1:6379> type aa
none
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值