1.删

del key [key ... ]

返回值:影响值

2.改

rename key newkey

keynewkey相同或者key不存在时,返回一个错误

newkey已经存在时,RENAME命令将覆盖旧值。

返回值:

改名成功时提示OK,失败时候返回一个错误。

renamenx key newkey

当且仅当newkey不存在时,将key改为newkey

keynewkey相同或者key不存在时,返回一个错误

move key db:

把key移动到指定db

如果两个数据库key有重名的,移动后,覆盖旧值

返回值:1,0

select 0 #选择0数据库

set name xiaomei

move name 1

exists name

返回0 ,说明name已经移动到数据库1,

expire key seconds :

设定key的生存时间,key不存在则报错

persist key:

移除给key设定的生存时间。

返回值:1,0

3.查

keys pattern :查看符合模式的key

keys  *    ,key h?llo    , key h*lo, key h[ae]llo

randomkey:数据库随机返回

如果没有返回nil

ttl key:查看key的剩余时间

set name xiaomei

expire name 30

ttl name

exists key:查看是否存在

返回值:

1或者0

type key

返回值:

none(key不存在)
string(字符串)
list(列表)
set(集合)
zset(有序集)
hash(哈希表)

知识点1:

SORT key [BY pattern] [LIMIT offset count] [GET pattern [GET pattern ...]] [ASC | DESC] [ALPHA] [STORE destination]


sort key :根据value进行排序

sort key alpha :根据字母排序进行排序

sort key offset count [asc||desc] :从第offset开始,升降序取count个

使用外部key进行排序

有时候你会希望使用外部的key作为权重来比较元素,代替默认的对比方法。

假设现在有用户(user)数据如下:

id name level
1 admin 9999
2 huangz 10
59230 jack 3
222 hacker 9999
id数据保存在key名为user_id的列表中。
name数据保存在key名为user_name_{id}的列表中
level数据保存在user_level_{id}key中。

# 先将要使用的数据加入到数据库中# adminredis> LPUSH user_id 1
(integer) 1
redis> SET user_name_1 admin
OK
redis> SET user_level_1 9999
OK# huangzredis> LPUSH user_id 2
(integer) 2
redis> SET user_name_2 huangz
OK
redis> SET user_level_2 10
OK# jackredis> LPUSH user_id 59230
(integer) 3
redis> SET user_name_59230 jack
OK
redis> SET user_level_59230 3
OK# hackerredis> LPUSH user_id 222
(integer) 4
redis> SET user_name_222 hacker
OK
redis> SET user_level_222 9999
OK
redis> SORT user_id BY user_level_* DESC
1) "222"    # hacker
2) "1"      # admin
3) "2"      # huangz
4) "59230"  # jack
redis> SORT user_id BY user_level_* DESC GET user_name_*
1) "hacker"
2) "admin"
3) "huangz"
4) "jack"
可以多次地、有序地使用GET操作来获取更多外部key
# 先添加一些测试数据redis> SET user_password_222 "hey,im in"
OK
redis> SET user_password_1 "a_long_long_password"
OK
redis> SET user_password_2 "nobodyknows"
OK
redis> SET user_password_59230 "jack201022"
OK# 获取name和passwordredis> SORT user_id BY user_level_* DESC GET user_name_* GET user_password_*
1) "hacker"       # 用户名
2) "hey,im in"    # 密码
3) "jack"
4) "jack201022"
5) "huangz"
6) "nobodyknows"
7) "admin"
8) "a_long_long_password"

get # 可列出元素在列表中的id 就是我们lpush user_id 3 这个3

如果只想获取对象而不排序,可以by 一个不存在的字段,这样这个字段就不起排序作用了,只是把所有的对象列出来。


将排序的结果保存起来,可以给STORE选项指定一个key作为参数,排序结果将以列表的形式被保存到这个key上。(若指定key已存在,则覆盖。)

redis> SORT user_id BY user_level_* GET # GET user_name_* GET user_password_* STORE user_info_sorted_by_level    # 排序
(integer) 12  # 显示有12条结果被保存了redis> LRANGE user_info_sorted_by_level 0 11  # 查看排序结果
1) "59230"
2) "jack"
3) "jack201022"
4) "2"
5) "huangz"
6) "nobodyknows"
7) "222"
8) "hacker"
9) "hey,im in"
10) "1"
11) "admin"
12) "a_long_long_password"

将结果存成一个list


知识点2:

一个有趣的用法是将SORT结果保存,用EXPIRE为结果集设置生存时间,这样结果集就成了SORT操作的一个缓存。

这样就不必频繁地调用SORT操作了,只有当结果集过期时,才需要再调用一次SORT操作。

有时候为了正确实现这一用法,你可能需要加锁以避免多个客户端同时进行缓存重建(也就是多个客户端,同一时间进行SORT操作,并保存为结果集),具体参见SETNX命令。


redis -- key相关推荐

  1. Spring Boot 监听 Redis Key 失效事件实现定时任务

    点击上方"方志朋",选择"设为星标" 回复"666"获取新整理的面试文章 作者:彭超 https://antoniopeng.com 业务场 ...

  2. 因 Redis Key 命令不规范,导致熬了一个通宵才把Key删完了!

    来源:http://dwz.date/cmSG 前言 由于有一条业务线不理想,高层决定下架业务.对于我们技术团队而言,其对应的所有服务器资源和其他相关资源都要释放.释放了8台应用服务器: 1台es服务 ...

  3. redis 能不能监听特定的key失效_php监听redis key失效触发回调事件

    订单超时.活动过期解决方案:php监听redis key失效触发回调事件 Redis 的 2.8.0 版本之后可用,键空间消息(Redis Keyspace Notifications),配合 2.0 ...

  4. 17 redis -key设计原则

    书签系统 create table book ( bookid int, title char(20) )engine myisam charset utf8;insert into book val ...

  5. springboot listener_Springboot 监听redis key的过期事件

    项目中常常会碰到这样的需求,用户下订单后,30分钟未完成自动取消订单的功能. 有人说这个简单呀,写个定时任务就搞定了.除了定时任务之外,难道就没有其他的方法来实现吗?有--Redis 的键空间通知事件 ...

  6. redis key命名规范_公司内部 Redis 使用规范

    前言 在业务中,会经常使用 Redis 作为后端缓存.存储.如果结构规划不合理.命令使用不规范,会造成系统性能达到瓶颈.活动高峰系统可用性下降,也会增大运维难度.为了避免出现因 Redis 使用不当, ...

  7. php 监听redis,php监听redis key失效触发回调事件_后端开发

    php中使用fsockopen实现异步请求(代码示例)_后端开发 php执行一段程序,有可能几毫秒就执行完毕,也有可能耗时较长.例如,用户下单这个事件,如果调用了些第三方服务进行发邮件.短信.推送等通 ...

  8. Redis入门——3.Redis key的设计技巧

    Redis key的设计技巧 一,key设计原则 把表名转换为key前缀, 比如: tag: 第二段放置用于区分key的字段–对应mysql中的主键的列名 第三段放置主键值 第三段写列名 二,案例 用 ...

  9. Redis key前缀的设计与使用

    阅读目录 采用模板方法模式进行设计前缀空间 RedisPrefixKey 接口 RedisBasePrefixKey 抽象类 UserKey 实现类(自定义) 改造RedisUtil工具类的方法 具体 ...

  10. php 监听redis,php监听redis key失效触发回调事件

    订单超时.活动过期解决方案:php监听redis key失效触发回调事件 Redis 的 2.8.0 版本之后可用,键空间消息(Redis Keyspace Notifications),配合 2.0 ...

最新文章

  1. 作为一个程序员,数学对你到底有多重要(转)
  2. fiddler 在火狐(firefox)下无效的问题 ——Fiddler监听Firefox、Chrome中的http请求
  3. JavaScript cookie
  4. 线程同步之互斥量加锁解锁 死锁
  5. C++工作笔记-结构体与类的进一步探究(在C++中的结构体,非C语言结构体)
  6. Flink AggOperatorWholeWin 全窗口聚合函数
  7. ext拖动gridpanel的列组件消失_未来光伏组件市场格局:182mm市场占有率65%、210占5%、166占20%...
  8. Google广告优化与工具
  9. python获取音频音量大小_如何在python中规范化音频文件的音量:当前可用的任何包?...
  10. Mybatis框架|Mybatis下载步骤
  11. php++redius,【答疑】edius中快进播放的快捷键是什么啊? - 羽兔网问答
  12. 如何用photoshop快速换脸
  13. Android APP漏洞自动化静态扫描检测工具-Qark
  14. jquery对cookie进行读取、写入和删除
  15. Caused by: java.sql.SQLException: connection holder is null
  16. 用python爬取网易云评论最多的歌_巧用Python爬取网易云音乐歌曲全部评论
  17. 京冀101家饭店跻身北京2022年冬奥会官方接待签约名单
  18. 比赛即实战!中国软件杯发布全新产业创新赛项,校企可联合参赛
  19. 【Tableau 设计提示 6.0】Tableau有关设计地图提示
  20. java实现顺时针螺旋填入

热门文章

  1. 计算机搜索栏隐藏,win7系统电脑桌面搜索栏隐藏/关闭的详细技巧
  2. vue 多页面打包配置
  3. c语言中倒金字塔数字图形怎么,C语言倒金字塔编程.ppt
  4. 【知识点】(五)多元函数微积分学
  5. 09 Controls相机控制器
  6. freeswitch 电话拨通听不到对方声音
  7. web调用IC卡读卡器开发第八章--DES和3DES加解密
  8. SQL Server 2008连载之数据类型
  9. android适配器SimpleAdapter实现效果
  10. 已解决: newff()转为jar 调用报错:Layer sizes is not a row vector of positive integers