redis知识点

数据类型

1、字符串(String):最简单的数据类型,可以包含任意数据,如文本、二进制数据等。常见的使用场景是存储Session信息、存储缓存信息、存储整数信息,可以使用incr实现整数+1,使用decr实现整数-1
2、列表(List):有序的字符串元素集合,支持双端进行插入和删除操作,可以用作队列或栈
3、哈希(Hash):用于存储对象,类似于关联数组。每个哈希可以包含字段和与之相关联的值。常见使用场景是存储Session信息、存储商品的购物车,购物车非常适用于哈希字典表示,使用人员唯一编号作为字典的key,value值可以存储商品的id和数量等信息、存储详情页等信息
4、集合(Set):一个无序并唯一的键值集合。它常见的使用场景是是仙女关注功能,比如关注我的人和我关注的人,使用集合存储,可以保证人员不重复
5、有序集合(Sorted Set):使用zset表示,相当于Set集合类型多了一个排序属性score(分值)。它常见的使用场景是可以用来存储排名信息,关注列表功能,这样就可以根据关注实现排序展示

Redis在实际工作中广泛应用于多种业务场景,以下是一些常见的例子:

缓存:Redis作为Key-Value形态的内存数据库,最先会被想到的应用场景就是作为数据缓存。Redis提供了键过期功能,也提供了键淘汰策略,所以Redis用在缓存的场合非常多

排行榜:很多网站都有排行榜应用,如京东的月度销量榜单、商品按时间上新排行榜等。Redis提供的有序集合(zset)数据类

分布式会话:在集群模式下,一般会搭建以Redis等内存等内存数据库为中心的session服务,session不再由容器管理,而是由session服务及内存数据库管理

分布式锁:在高并发的情景,可以利用Redis的setnx功能来编写分布式锁

缓存的流程

从Redis中查询数据,没有获取到数据到数据库中查数据,然后加入Redis缓存。

Redis 的持久化机制是什么?各自的优缺点?

Redis提供两种持久化机制 RDB 和 AOF 机制:

1、RDB(Redis DataBase)持久化方式:
是指用数据集快照的方式半持久化模式)记录 redis 数据库的所有键值对,在某个时间点将数据写入一个临时文件,持久化结束后,用这个临时文件替换上次持久化的文件,达到数据恢复。

优点:

只有一个文件 dump.rdb,方便持久化。

容灾性好,一个文件可以保存到安全的磁盘。

性能最大化,fork 子进程来完成写操作,让主进程继续处理命令,所以是 IO最大化。使用单独子进程来进行持久化,主进程不会进行任何 IO 操作,保证了 redis的高性能。

相对于数据集大时,比 AOF 的启动效率更高。

缺点:

数据安全性低。RDB 是间隔一段时间进行持久化,如果持久化之间 redis 发生故障,会发生数据丢失。所以这种方式更适合数据要求不严谨的时候

2、AOF(Append-only file) 持久化方式:
是指所有的命令行记录以 redis 命令请求协议的格式完全持久化存储)保存为 aof 文件。

优点:

数据安全,aof 持久化可以配置 appendfsync 属性,有 always,每进行一次命令操作就记录到 aof 文件中一次。

通过 append 模式写文件,即使中途服务器宕机,可以通过 redis-check-aof工具解决数据一致性问题。

缺点:

(1)AOF 文件比 RDB 文件大,且恢复速度慢。

(2)数据集大的时候,比 rdb 启动效率低。

redis的集群

1、主从复制

2、sentinel哨兵

3、cluster集群:主Redis槽位分配,

缓存穿透:对数据库中为空的数据搜索;解决办法:1、对返回的空数据也加入缓存;2、布隆过滤器

缓存击穿:对数据库中有的数据,但是没有缓存的数据操作;解决办法:加锁

缓存雪崩:缓存失效,或缓存集中读入;解决办法:对key设置不同的超时时间。

redis 过期键的删除策略?


(1)定时删除:在设置键的过期时间的同时,创建一个定时器 timer。
让定时器在键的过期时间来临时,立即执行对键的删除操作。

(2)惰性删除:放任键过期不管,但是每次从键空间中获取键时,都检查取得的键是否过期,如果过期的话,就删除该键;如果没有过期,就返回该键。

(3)定期删除:每隔一段时间程序就对数据库进行一次检查,删除里面的过期键。至于要删除多少过期键,以及要检查多少个数据库,则由算法决定。

Redis 的回收策略(淘汰策略)


volatile-lru:从已设置过期时间的数据集中挑选最近最少使用的数据淘汰

volatile-ttl:从已设置过期时间的数据集中挑选将要过期的数据淘汰

volatile-random:从已设置过期时间的数据集中任意选择数据淘汰

allkeys-lru:从数据集中挑选最近最少使用的数据淘汰

allkeys-random:从数据集中任意选择数据淘汰

no-enviction(驱逐):禁止驱逐数据

Redis的性能调优技巧有哪些?

Redis的性能调优技巧包括以下几个方面:

使用合适的数据结构:选择适当的数据结构来存储和操作数据,以提高读写性能。
使用批量操作和管道技术:通过批量操作和管道技术可以减少网络开销和降低延迟,提高性能。
设置合理的最大内存限制:根据系统的实际内存情况,设置合理的最大内存限制,避免过度使用内存导致性能问题。
合理配置持久化策略:根据实际需求选择适当的持久化方式,并设置合理的持久化频率,平衡数据持久化和性能之间的关系。
合理使用缓存过期时间:根据业务需求和数据特性,设置合理的缓存过期时间,避免缓存数据过期或占用过多的内存。
避免过度使用阻塞操作:尽量避免使用阻塞操作,如阻塞的命令和阻塞的事件通知,以充分利用Redis的异步特性和高并发能力。
 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值