浦东企业网站建设,深圳短视频拍摄公司,自己做网站导航,百度网盘app官方下载什么是Reids#xff08;REmote Dictionary Server#xff09;
Redis是现在主流的数据库之一#xff0c;是一个使用ANSI C编写的开源、包含多种数据结构、支持网络的、基于内存、可选持久性的键值对存储数据。
特性
1.速度快
#xff1a;Redis的数据全部存储瑜内存中。 …什么是ReidsREmote Dictionary Server
Redis是现在主流的数据库之一是一个使用ANSI C编写的开源、包含多种数据结构、支持网络的、基于内存、可选持久性的键值对存储数据。
特性
1.速度快
Redis的数据全部存储瑜内存中。 可以通过下面的表来对比一下Redis的核心功能都是比较简单的逻辑核心功能都是比较简单的数据结构来实现的从网络角度上来看Redis使用了“IO多路复用的方式”Redis使用的是单线程模型减少了锁之间的冲突
基于键值对的数据结构
几乎所有的编程语言都提供了类似字典的功能例如C中的mapjava中的map等类似于这种键值对的方式与很多键值对不同的是Redis中的值不仅可以是字符串还可以是具体的数据结构这样不仅能便于在许多应⽤场景的开发同时也能提⾼开发效率。
3.丰富的功能
提供了键过期功能可以用来实现缓存提供了发布订阅的功能可以用来实现消息系统支持Lua脚本功能可以利用脚本创造出Redis命令提供了简单的事务功能能在一定程度上保证事务特性提供了流水线功能这样客户端 能将一批命令一次上传到Redis中减少了网络的开销
4.持久化
通常看将数据放在内存中是不安全的⼀旦发⽣断电或者机器故障重要的数据可能就会丢失因此Redis提供了两种持久化⽅式RDB和AOF即可以⽤两种策略将内存的数据保存到硬盘中这样可以保证数据的可持久性。
当然Redis还有很多的特性可以去官网上看看。 基本全局命令
set
将key和value存储进去
注意一点就是key都是string但是value可以是多种类型
get
根据key获取对应的value如果当前的key不存在就返回nil
keys
返回所有满足样式的key。支持通配符匹配时间复杂度ON
通配符匹配规则
匹配一个字符*匹配0个或者多个字符[a,b]匹配a到b的字符[^e]匹配除了e的字符
下面是例子
h?llo 匹配 hello , hallo和 hxlloh*llo 匹配 hllo和 heeeelloh[ae]llo匹配 hello和 hallo但不匹配 hillo
注意的是keys的时间复杂度是ON 所以在生产环境中禁止使用keys * 来查询所有的key。
因为redis是一个单线程的服务器执行keys*的时间非常长就使redis阻塞住了无法给其他客户端提供服务了。redis经常被用来做缓存挡在数据库的前面如果redis因为keys*阻塞住了那么当一大批请求过来的时候mysql就很容易挂掉。
exists
使用方法 EXISTS key [key …]
判断某个key是否存在时间复杂度O1返回值key存在的个数 DEL
删除指定的key 使用方法DEL key [key …]
时间复杂度O1返回值删除掉key的个数
EXPIRE
为指定的key添加秒级的过期时间 使用方法 EXPIRE key seconds
时间复杂度O1返回值1表示成功0表示设置失败 TTL
获取指定key的过期时间秒级 使用方法TTL key
时间复杂度O1返回值剩余过期时间。-1表示没有关联的过期时间-2表示key不存在 图解过期机制
type
返回key对应的数据类型 使用方法TYPE key
时间复杂度O1返回值nonestringlistsetzsethash和stream redis中的过期策略
redis的key过期策略如何实现的 一个redis中可能同时存在很多key这些key中可能有一大部分都有过期时间此时redis服务器怎么知道key已经过期了呢
redis整体的策略
定期删除惰性删除
定期删除 结合定期删除操作。
惰性删除 假设这个key已经到了过期时间但是暂时不用删除它key还存在当下一次访问的时候用到这个key的时候会让redis触发删除机制同时分会一个nil
关于定时删除的功能其实redis中没有采用定时器的方式来实现定期删除key。 如果有多个key过期了可以采用通过一个定时器的来高效/节省CPU的前提下处理多个key即优先级队列 或者基于时间轮都可以实现高效的定时器