欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 财经 > 创投人物 > Redis(超详细)

Redis(超详细)

2024/10/24 11:22:44 来源:https://blog.csdn.net/xiaoxiaobaozhu/article/details/139861042  浏览:    关键词:Redis(超详细)

Redis


Redis概念:

Redis是开源的,遵循BSD的,基于内存数据存储,被用于作为数据库、缓存机制、消息中间件;


Redis的特点:

1.高性能key/valu内存xing数据库;

2.支持丰富的数据类型

3.支持持久化;

4.单线程,单进程。


Redis为什么快?

他直接运行在内存上,他查询速率要比硬盘快上很多倍,他是单线程。 

NoSQL(Not only SQL)

概念

意即不仅仅是SQL,泛指非关系型数据库;


NoSQL的四大分类:


1.键值key-value存储数据库;
2.列存储数据库;
3.文档型数据库;
4.图形数据库。


redis-cli:是redis提供的命令行客户端;

redis-server:是redis的服务端启动脚本;

redis-sentinel:是redis的哨兵启动脚本。


五种基本数据类型:


1.String 存字符串 验证码


String:通常用于存储验证码 set get 多个值 mset mget

设置有效时间:expire key time / setex key time value

查看存活时间 ttl key

追加 sppend key value 数值加减 -1 decr +1 incr + by key

2.List 排序 商品列表

list:有序的可重复的集合;通常用于商品列表的展示,

lpush lrange key 起始索引 结束索引

删除重复元素:lrem key 删除个数 value

获取列表个数 llen key

3.Ste 共同好友,可能认识的人

set:无序的不可重复的集合;通常用于好友推荐,共同好友。

sadd 获取所有元素 smembers key 获取集合元素个数 scard key

求差集 sdiff 求交集 sinter

4.Zset 有序不可重复  排行榜

zset:可排序,不可重复的set集合;通常用于排行榜。

zadd 返回个数 zcard 升序 zrange 降序 zrevrange

5.Hash 

hash:key{key value}

hset hget hgetall

判断key是否存在:hexists 获得所有的key hkeys 获得所有的值 hvals

Redis的持久化

1.RDB(快照)

01.BGSAVE

第一种是客户端通过BGSAVE命令来创建一个快照,当接收到客户端的BGSAVE命令时,redis会调用fork来创建一个子进程,然后子进程负责将快照写入磁盘中,而父进程则继续处理命令请求。

02.SAVE

第二种是客户端通过SAVE命令来创建快照,接收到SAVE命令的redis服务器在快照创建完毕之前将不再响应任何其他的命令。这个命令不常用,因为使用SAVE命令在创建快照完毕之前,redis处于阻塞状态,无法对外服务。

2.AOF(只追加日志文件)

AOF可以将所有客户端的所有写命令记录在日志文件中。

特点:

这种方式可以将所有客户端执行的写命令记录到日志文件中,AOF持久化会将被执行的写命令写到AOF的文件末尾,以此来记录数据发生的变化,因此只要redis从头到尾执行一次AOF文件所包含的所有写命令,就可以恢复AOF文件的记录的数据集.

日志追加频率

1.everysec每秒执行一次同步显示的将多个命令同步到磁盘(推荐);

2.always每个redis写命令都要同步写入磁盘,严重降低redis速度(谨慎使用);

3.no 由操作系统决定何时同步(不推荐)。

AOF重写

AOF重写是我们创建一个新的AOF文件,把对里边儿的所有的数据进行一个命令重写的方式,写到这个新的AOF文件里面,并需把旧的AOF文件替换掉。

Redis主从复制

Redis是一种常见的数据备份方式,可以解决冗余备份,实现读写分离等功能;Redis的原理其实就是一个redis实例的数据复制到多个redis实例上,一个redis为主节点,多个redis实例为从节点,主节点负责所有数据的写操作,然后将写操作同步给从节点,从节点只接收读请求,不处理任何的写请求,从而保证了数据的一致性。

Redis哨兵机制

哨兵机制是redis高可用性的重要保障,哨兵机制是由哨兵节点组成,这些哨兵节点会定期检查Redis实例的健康状态,并在主节点出现故障时,哨兵机制就会自动在从节点中选举新的主节点,同时,哨兵节点还可以操作故障转移操作,将原本的从节点提升为新的主节点,并重新建立主从关系。如果旧主节点恢复了,就会成为新主节点的从节点。

缓存雪崩:

redis中多个key同时失效,过期的数据在redis中就会消失,这个时候如果多个请求来访问,redis就无法响应,就会去访问数据库,数据库就瞬间感觉到压力大而卡死或者宕机;

雪崩解决方案:

1.给key设置随机的失效时间;

 2.集群方案放置宕机不可用。

击穿:

redis中某一个key失效,这个时候有很多请求来访问这个失效的key,在redis中得不到响应,就去访问数据库,导致数据库瘫痪;

击穿解决方案:

1.互斥锁

 2.逻辑过期

穿透:

用户发送请求的数据在redis中和数据库中都不存在,这样缓存永远都不会失效,请求最终都到了数据库上。

解决方案:

1.当在数据库查询的结果也不存在的时候,可以返回null值给redis,并给null设置失效时间;

2.布隆过滤器。

延迟双删

为了保证在修改或者删除的时候,redis中的数据和数据库中的数据保持一致;当用户进行修改或者删除的操作时,先将redis中的缓存删除,然后去数据库去做对应操作,这个时候有用户进来读取这条信息,那么这条数据就会重新加载redis缓存中,所以当数据库操作完成后,需要再一次删除redis中的缓存,从而保证redsi中的数据和数据库中的数据保持一致。

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com