Redis 学习笔记3-排序
2015-11-25 19:43
633 查看
1 redis使用sort对集合元素排序,默认是按数字升序,如果元素是字母需要加 alpha ,默认是 a-z ,如果倒序,需要使用desc
127.0.0.1:6379> sadd s1 a
(integer) 1
127.0.0.1:6379> sadd s1 c
(integer) 1
127.0.0.1:6379> sadd s1 b
(integer) 1
127.0.0.1:6379> sort s1
(error) ERR One or more scores can't be converted into double
127.0.0.1:6379> sort s1 alpha
1) "a"
2) "b"
3) "c"
2 by 模式
先看一个例子:
127.0.0.1:6379> sadd s1 a
(integer) 1
127.0.0.1:6379> sadd s1 b
(integer) 1
127.0.0.1:6379> sadd s1 c
(integer) 1
127.0.0.1:6379> set sa 1
OK
127.0.0.1:6379> set sc 2
OK
127.0.0.1:6379> set sb 3
OK
127.0.0.1:6379> sort s1 by s*
1) "a"
2) "c"
3) "b"
127.0.0.1:6379> sort s1 by s* desc
1) "b"
2) "c"
3) "a"
字符串s* 是一种模式,s* 匹配 sa sb sc,这样就好按着字符串键对应的值排序,排序依据不再是自身元素 而是其他的模式。
上面是字符串作为一种模式,hash也可以作为一种模式 根据key->键 的值匹配
127.0.0.1:6379> hset ha id 3
(integer) 1
127.0.0.1:6379> hset hb id 1
(integer) 1
127.0.0.1:6379> hset hc id 2
(integer) 1
127.0.0.1:6379> sort s1 by h*->id
1) "b"
2) "c"
3) "a"
要获取模式的值,使用get 模式 ,get # 获得集合元素值
127.0.0.1:6379> sort s1 by s* desc get s* get #
1) "3"
2) "b"
3) "2"
4) "c"
5) "1"
6) "a"
127.0.0.1:6379>
3 指定范围 limit 索引 返回的数量
127.0.0.1:6379> sort s1 alpha limit 0 2
1) "a"
2) "b"
127.0.0.1:6379>
4 返回结果进行缓存 store
127.0.0.1:6379> sort s1 alpha store s2
(integer) 3
127.0.0.1:6379> lrange s2 0 -1
1) "a"
2) "b"
3) "c"
127.0.0.1:6379>
5 综合小例子:
tom的好友id
127.0.0.1:6379> sadd tom:friends:uids 112
(integer) 1
127.0.0.1:6379> sadd tom:friends:uids 115
(integer) 1
127.0.0.1:6379> sadd tom:friends:uids 119
(integer) 1
id对应的姓名和成绩
127.0.0.1:6379> set uid:name:112 zhangsan
OK
127.0.0.1:6379> set uid:name:115 lisi
OK
127.0.0.1:6379> set uid:name:119 wangwu
OK
127.0.0.1:6379> set uid:score:112 99
OK
127.0.0.1:6379> set uid:score:115 90
OK
127.0.0.1:6379> set uid:score:119 95
OK
tom的好友成绩从低到高排序对应的姓名是:
127.0.0.1:6379> sort tom:friends:uids by uid:score:* get uid:name:*
1) "lisi"
2) "wangwu"
3) "zhangsan"
127.0.0.1:6379> sadd s1 a
(integer) 1
127.0.0.1:6379> sadd s1 c
(integer) 1
127.0.0.1:6379> sadd s1 b
(integer) 1
127.0.0.1:6379> sort s1
(error) ERR One or more scores can't be converted into double
127.0.0.1:6379> sort s1 alpha
1) "a"
2) "b"
3) "c"
2 by 模式
先看一个例子:
127.0.0.1:6379> sadd s1 a
(integer) 1
127.0.0.1:6379> sadd s1 b
(integer) 1
127.0.0.1:6379> sadd s1 c
(integer) 1
127.0.0.1:6379> set sa 1
OK
127.0.0.1:6379> set sc 2
OK
127.0.0.1:6379> set sb 3
OK
127.0.0.1:6379> sort s1 by s*
1) "a"
2) "c"
3) "b"
127.0.0.1:6379> sort s1 by s* desc
1) "b"
2) "c"
3) "a"
字符串s* 是一种模式,s* 匹配 sa sb sc,这样就好按着字符串键对应的值排序,排序依据不再是自身元素 而是其他的模式。
上面是字符串作为一种模式,hash也可以作为一种模式 根据key->键 的值匹配
127.0.0.1:6379> hset ha id 3
(integer) 1
127.0.0.1:6379> hset hb id 1
(integer) 1
127.0.0.1:6379> hset hc id 2
(integer) 1
127.0.0.1:6379> sort s1 by h*->id
1) "b"
2) "c"
3) "a"
要获取模式的值,使用get 模式 ,get # 获得集合元素值
127.0.0.1:6379> sort s1 by s* desc get s* get #
1) "3"
2) "b"
3) "2"
4) "c"
5) "1"
6) "a"
127.0.0.1:6379>
3 指定范围 limit 索引 返回的数量
127.0.0.1:6379> sort s1 alpha limit 0 2
1) "a"
2) "b"
127.0.0.1:6379>
4 返回结果进行缓存 store
127.0.0.1:6379> sort s1 alpha store s2
(integer) 3
127.0.0.1:6379> lrange s2 0 -1
1) "a"
2) "b"
3) "c"
127.0.0.1:6379>
5 综合小例子:
tom的好友id
127.0.0.1:6379> sadd tom:friends:uids 112
(integer) 1
127.0.0.1:6379> sadd tom:friends:uids 115
(integer) 1
127.0.0.1:6379> sadd tom:friends:uids 119
(integer) 1
id对应的姓名和成绩
127.0.0.1:6379> set uid:name:112 zhangsan
OK
127.0.0.1:6379> set uid:name:115 lisi
OK
127.0.0.1:6379> set uid:name:119 wangwu
OK
127.0.0.1:6379> set uid:score:112 99
OK
127.0.0.1:6379> set uid:score:115 90
OK
127.0.0.1:6379> set uid:score:119 95
OK
tom的好友成绩从低到高排序对应的姓名是:
127.0.0.1:6379> sort tom:friends:uids by uid:score:* get uid:name:*
1) "lisi"
2) "wangwu"
3) "zhangsan"
相关文章推荐
- redis安装问题小结
- Redis偶发连接失败案例实战记录
- Redis中实现查找某个值的范围
- Redis和Memcached的区别详解
- 分割超大Redis数据库例子
- Redis总结笔记(一):安装和常用命令
- Redis sort 排序命令详解
- 用Redis实现微博关注关系
- redis中修改配置文件中的端口号 密码方法
- 在Ruby on Rails上使用Redis Store的方法
- Redis和Memcache的区别总结
- 在Node.js应用中使用Redis的方法简介
- Redis服务器的启动过程分析
- web 应用中常用的各种 cache详解
- 利用yum安装Redis的方法详解
- 从MySQL到Redis的简单数据库迁移方法
- 为啥懒 Redis 是更好的 Redis
- 利用Redis实现SQL伸缩的方法
- 在Redis数据库中实现分布式速率限制的方法
- PHP+redis实现添加处理投票的方法