Redis-通用指令篇

上一篇:Redis-数据类型篇web

Redis-通用指令篇

Redis简介

Redis是C语言开发的一个高性能键值对(key -value) 内存数据库,能够用做数据库,缓存和消息中间件等。redis

特色数据库

  1. 做为内存数据库,它的性能很是优秀,数据存储在内存当中,读写速度很是快,支持并发10W QPS(每秒查询次数),单进程单线程,是线程安全的,采用IO多路复用机制。缓存

  2. 丰富的数据类型,支持字符串,散列,列表,集合,有序集合等,支持数据持久化。能够将内存中数据保存在磁盘中,重启时加载。安全

  3. 主从复制,哨兵,高可用,可用做分布式锁。能够做为消息中间件使用,支持发布订阅。数据结构


Redis——通用命令操做

key是什么?

不一样于上一篇所说的数据类型都是指Redis中value值的类型
value经常使用数据结构类型:string、list、hash、set、sorted_set并发

key 是一个字符串,在Redis中能够经过 key 来获取 Redis 中保存的数据
Redis是key-value型数据库分布式

redis 中的 key 是二进制安全的,这意味着能够用任何二进制值做为key,包括空字符串svg

key 值取值通常不要过长,在数据中查找这类 key 的计算成本较高,消耗内存。可是也不能太短,最好作到知名见意高并发

针对key的一些经常使用操做?

1. 对于key的自身状态控制的相关操做:

删除指定key

del key // 成功 1  失败 0

获取key是否存在

exists key // 存在 1  不存在 0

获取key类型

type key  // 获取显示的是key对应value对应的数据结构的类型

2. 对于key的时效性相关操做:

时效性问题:

缓存雪崩:指某个时间段缓存中的key集体失效,形成了大流量直接访问到数据库,从而使数据库压力过大被压垮,expire key seconds

解决:缓存时间随机,使得它尽量分散,避免它们同时失效,通常来讲大热门的数据缓存时间设置长一些,没那么热门的设置短一些

缓存击穿:指一个很是热点的数据,不停的被高并发访问,当这个key在时效的瞬间,大流量直接穿透缓存打到了数据库上,就会形成数据库被压垮

解决:这些很是热点的key设置为永不过时 如:persist key,其余方法如(互斥锁:集群下的SETNX 布隆过滤器等)之后再讨论。

缓存穿透:查一个数据库不存在的数据,如用户ID为 -1

解决:缓存空值,数据库查询为空的也放到缓存,而后设置一个较短的过时时间expire key seconds 如 60s


为指定key设定有效期

expire key seconds // 以秒计  成功 1  失败 0

pexpire key milliseconds // 以毫秒计...

expireat key timestamp // EXPIREAT 的做用和 EXPIRE 相似,都用于为 key 设置过时时间。 不一样在于 EXPIREAT 命令接受的时间参数是 UNIX 时间戳。

pexpireat key milliseconds-timestamp // 设置 key 过时时间的 UNIX 时间戳 以毫秒计

获取key的有效时间

查看某个key的剩余过时时间,返回值:

为 -2 表示这个key已通过期,删除掉

为 -1 表示没有设置过时时间

其它 表示剩余的生存时间,单位为秒

ttl key  // 以秒为单位

pttl key // 以毫秒为单位

切换key的时效性为永久

persist key //  成功 1  失败 0

3. 对于key的查询检索相关操做:

获取全部key

keys pattern  // 模糊查找

pattern匹配规则

* 匹配任意数量的任意符号

? 配合一个任意符号

[] 匹配一个指定符号

命令 介绍
keys * 查询全部,为空则(empty list or set)
keys it* 查询全部以it开头的
keys *ame 查询全部以ame结尾
keys ??me 查询全部前面两个字符任意,后面以me结尾
keys nam? 查询全部以nam开头,最后一个字符任意
keys n[nm]e 查询全部以n开头,以e结尾,中间包含一个字母,n或m

4. 对于key的其余操做:

为 key 更名

rename key newkey   // 直接修改,当 key 和 newkey 相同,或者 key 不存在时,返回一个错误。
 
 renamenx key newkey  // 仅当 newkey 不存在时,将 key 更名为 newkey 。

对全部 key 排序

sort key  // 只是取出来排序返回结果,不会影响原来数据结构数据顺序

在Redis中随机返回一个 key

RANDOMKEY