Redis-通用指令篇

上一篇:Redis-数据类型篇

文章目录

  • Redis-通用指令篇
    • Redis简介
    • Redis——通用命令操作
      • key是什么?
      • 针对key的一些常用操作?
        • 1. 对于key的自身状态控制的相关操作:
        • 2. 对于key的时效性相关操作:
        • 3. 对于key的查询检索相关操作:
        • 4. 对于key的其他操作:

Redis-通用指令篇

Redis简介

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

特点

  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,包括空字符串

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

你可能感兴趣的:(Redis)