redis学习笔记---redis特性(expire、事务、数据排序、config命令)
2015-12-14 00:00
706 查看
摘要: 本系列redis博客纯属个人学习总结记录之用,初学者,如若见不当之处,望指教。本篇主要是expire设置过期时间、redis的事务、redis使用sort对数据排序以及config命令的使用
一、键的生存时间expire
redis可以使用expire命令设置一个键的生存时间,到时间后redis会自动删除它
命令:
①
expire 设置生存时间(单位/秒) expire a 10
②pexpire
设置生存时间(单位/毫秒)
③ttl/pttl 查看键的剩余生存时间 ttl a
④persist 取消生存时间
⑤expireat [key] unix时间戳1351858600
⑥pexpireat [key] unix时间戳(毫秒)1351858700000
应用场景:
①
限时的优惠活动信息
②网站数据缓存(对于一些需要定时更新的数据,例如:积分排行榜)
③限制网站访客访问频率(例如:1分钟最多访问10次)
二、redis的事务(transaction)
redis事务是一组命令的集合,事务和命令一样是执行的的最小单元,一个事务的命令的集合要命都执行,要命都不执行;redis事务实现原理是先将命令进行缓存,然后再让redis按照顺序执行这些命令。
注意:redis的事务是不支持回滚的,一旦失败就必须重新执行事务命令的集合,也正因为redis事务不支持回滚才使得redis的事务可以保持简洁和快速。在十五执行过程中可以使用watch名流那个对指定的键的状态进行监控;
监控一个或者多个键,当被监控的键值被修改后阻止之后的一个事务的执行
但是不能保证其它客户端不修改这一键值,所以我们需要在事务执行失败后重新执行事务中的命令。
注意:
执行完事务的exec命令之后,watch就会取消对所有键值的监控
命令:
multi 事务开始
.....
exec 事务结束,开始执行事务中的命令
discard 放弃事务
错误处理:
1:语法错误:致命的错误,事务中的所有命令都不会执行
2:运行错误:不会影响事务中其他命令的执行
应用场景:
一组命令必须同时都执行,或者都不执行。
我们想要保证一组命令在执行的过程之中不被其它命令插入。
三、数据的排序(sort)
sort命令可以对列表类型,集合类型和有序集合类型,进行排序。
命令:
sort key [desc] [limit offset count]
sort list desc
sort list limit 0 2 排序,从0开始取2条数据
sort list store tmp_list 排序后保存到tmplist里面
以上是对数字的排序
对字符排序如下:
sort list alpha 按照字典排序
by 参考键(参考键可以是字符串类型或者是hash类型的某个字段,hash类型的格式为:键名->字段名)
如果参考键中不带*号则不排序
如果某个元素的参考键不存在,则默认参考键的值为0
举例:
list(1,2,3,4)
set score:1 20 score:2 68 score:3 56 score:4 88
sort list by score:*
lpush list 2 1 4 3
hmset post:1 title one time 13332190
hmset post:2 title two time 13332190
hmset post:3 title three time 13332190
hmset post:4 title four time 13332190
sort list by post:*->time desc 根据时间排序
sort list by post:*->time get post:*->title get post:*->time get # 连同排序字段也返回
扩展 get参数(上面已经用过了)
get参数的规则和by参数的规则一样
get # (返回元素本身的值)
扩展 store参数
使用store 参数可以把sort的排序结果保存到指定的列表中
性能优化
1:尽可能减少待排序键中元素的数量
2:使用limit参数只获取需要的数据
3:如果要排序的数据数量很大,尽可能使用store参数将结果缓存。
四、redis中的config命令
使用config set可以动态设置参数信息,服务器重启之后就失效了。
config set appendonly yes
config set save "90 1 30 10 60 100"
使用config get可以查看所有可以使用config set命令设置的参数
config get *
使用config rewrite命令对启动 Redis 服务器时所指定的 redis.conf 文件进行改写(Redis 2.8 及以上版本才可以使用),主要是
把使用config set动态指定的命令保存到配置文件中。
config rewrite
注意:config rewrite命令对 redis.conf 文件的重写是原子性的, 并且是一致的: 如果重写出错或重写期间服务器崩溃, 那么重写失败, 原有 redis.conf 文件不会被修改。 如果重写成功, 那么 redis.conf 文件为重写后的新文件。
一、键的生存时间expire
redis可以使用expire命令设置一个键的生存时间,到时间后redis会自动删除它
命令:
①
expire 设置生存时间(单位/秒) expire a 10
②pexpire
设置生存时间(单位/毫秒)
③ttl/pttl 查看键的剩余生存时间 ttl a
④persist 取消生存时间
⑤expireat [key] unix时间戳1351858600
⑥pexpireat [key] unix时间戳(毫秒)1351858700000
应用场景:
①
限时的优惠活动信息
②网站数据缓存(对于一些需要定时更新的数据,例如:积分排行榜)
③限制网站访客访问频率(例如:1分钟最多访问10次)
二、redis的事务(transaction)
redis事务是一组命令的集合,事务和命令一样是执行的的最小单元,一个事务的命令的集合要命都执行,要命都不执行;redis事务实现原理是先将命令进行缓存,然后再让redis按照顺序执行这些命令。
注意:redis的事务是不支持回滚的,一旦失败就必须重新执行事务命令的集合,也正因为redis事务不支持回滚才使得redis的事务可以保持简洁和快速。在十五执行过程中可以使用watch名流那个对指定的键的状态进行监控;
监控一个或者多个键,当被监控的键值被修改后阻止之后的一个事务的执行
但是不能保证其它客户端不修改这一键值,所以我们需要在事务执行失败后重新执行事务中的命令。
注意:
执行完事务的exec命令之后,watch就会取消对所有键值的监控
命令:
multi 事务开始
.....
exec 事务结束,开始执行事务中的命令
discard 放弃事务
错误处理:
1:语法错误:致命的错误,事务中的所有命令都不会执行
2:运行错误:不会影响事务中其他命令的执行
应用场景:
一组命令必须同时都执行,或者都不执行。
我们想要保证一组命令在执行的过程之中不被其它命令插入。
三、数据的排序(sort)
sort命令可以对列表类型,集合类型和有序集合类型,进行排序。
命令:
sort key [desc] [limit offset count]
sort list desc
sort list limit 0 2 排序,从0开始取2条数据
sort list store tmp_list 排序后保存到tmplist里面
以上是对数字的排序
对字符排序如下:
sort list alpha 按照字典排序
by 参考键(参考键可以是字符串类型或者是hash类型的某个字段,hash类型的格式为:键名->字段名)
如果参考键中不带*号则不排序
如果某个元素的参考键不存在,则默认参考键的值为0
举例:
list(1,2,3,4)
set score:1 20 score:2 68 score:3 56 score:4 88
sort list by score:*
lpush list 2 1 4 3
hmset post:1 title one time 13332190
hmset post:2 title two time 13332190
hmset post:3 title three time 13332190
hmset post:4 title four time 13332190
sort list by post:*->time desc 根据时间排序
sort list by post:*->time get post:*->title get post:*->time get # 连同排序字段也返回
扩展 get参数(上面已经用过了)
get参数的规则和by参数的规则一样
get # (返回元素本身的值)
扩展 store参数
使用store 参数可以把sort的排序结果保存到指定的列表中
性能优化
1:尽可能减少待排序键中元素的数量
2:使用limit参数只获取需要的数据
3:如果要排序的数据数量很大,尽可能使用store参数将结果缓存。
四、redis中的config命令
使用config set可以动态设置参数信息,服务器重启之后就失效了。
config set appendonly yes
config set save "90 1 30 10 60 100"
使用config get可以查看所有可以使用config set命令设置的参数
config get *
使用config rewrite命令对启动 Redis 服务器时所指定的 redis.conf 文件进行改写(Redis 2.8 及以上版本才可以使用),主要是
把使用config set动态指定的命令保存到配置文件中。
config rewrite
注意:config rewrite命令对 redis.conf 文件的重写是原子性的, 并且是一致的: 如果重写出错或重写期间服务器崩溃, 那么重写失败, 原有 redis.conf 文件不会被修改。 如果重写成功, 那么 redis.conf 文件为重写后的新文件。
相关文章推荐
- 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实现添加处理投票的方法