page contents
Nen
Nen - 程序员

性别: 天津 - 天津市 注册于 2021-06-23

向TA求助
2850金币数
43180 经验值
1个粉丝
主页被访问 6241 次

3096 个回答

0 赞同

如何选择合适的持久化方式?

1、如果是数据不那么敏感,且可以从其他地方重新生成补回的,那么可以关闭持久化。 2、如果是数据比较重要,不想再从其他地方获取,且可以承受数分钟的数据丢失,比如缓存等,那么可以只使用RDB。 3、如果是用做内存数据库,要使用Redis的持久化,建议是RDB和AOF都开启,或者定期执行bgsave做快照备份,RDB方式更适合做数...

回答于 2021-11-24 14:34

0 赞同

Redis key的过期时间和永久有效分别怎么设置?

通过expire或pexpire命令,客户端可以以秒或毫秒的精度为数据库中的某个键设置生存时间。 与expire和pexpire命令类似,客户端可以通过expireat和pexpireat命令,以秒或毫秒精度给数据库中的某个键设置过期时间,可以理解为:让某个 键在某个时间点过期。

回答于 2021-11-24 14:31

0 赞同

双写一致性方案一:先删除缓存,后更新数据库

该方案也会出问题,此时来了两个请求,请求 A(更新操作) 和请求 B(查询操作) 1. 请求A进行写操作,删除缓存 2. 请求B查询发现缓存不存在 3. 请求B去数据库查询得到旧值 4. 请求B将旧值写入缓存 5. 请求A将新值写入数据库。 上述情况就会导致不一致的情形出现。而且,如果不采用给缓存设置过期时间策略,该数据永...

回答于 2021-11-24 14:29

0 赞同

我们知道通过expire来设置key 的过期时间,那么对过期的数据怎么...

除了缓存服务器自带的缓存失效策略之外(Redis默认的有6中策略可供选择),我们还可以根据具体的业务需求进行自定义的缓存淘汰,常见的策 略有两种: 1. 定时去清理过期的缓存; 2. 当有用户请求过来时,再判断这个请求所用到的缓存是否过期,过期的话就去底层系统得到新数据并更新缓存。 两者各有优劣,第一种的缺点是...

回答于 2021-11-23 15:41

0 赞同

什么是 RDB 内存快照?

Redis 通过链式哈希解决冲突:也就是同一个 桶里面的元素使用链表保存。但是当链表过长就会导致查找性能变差可能,所以 Redis 为了追求快, 使用了两个全局哈希表。用于 rehash 操作,增加现有的哈希桶数量,减少哈希冲突。 开始默认使用 「hash 表 1 」保存键值对数据,「hash 表 2」 此刻没有分配空间。当数据越来越多...

回答于 2021-11-23 15:28

0 赞同

在生成 RDB 期间,Redis 可以同时处理写请求么?

可以的,Redis 使用操作系统的多进程写时复制技术 COW(Copy On Write) 来实现快照持久化, Redis 在持久化时会调用 glibc 的函数fork产生一个子进程,快照持久化完全交给子进程来处理, 当主线程执行写指令修改数据的时候,这个数据就会复制一份副本, bgsave 子进程读取这个副本 这既保证了快照的完整性,也允许主线程...

回答于 2021-11-23 15:22

0 赞同

何实现数据尽可能少丢失又能兼顾性能呢?

重启 Redis 时,我们很少使用 rdb 来恢复内存状态,因为会丢失大量数据。我们通常使用 AOF 日志重放,但是重放 AOF 日志性能相对 rdb 来说要 慢很多,这样在 Redis 实例很大的情况下,启动需要花费很长的时间。 Redis 4.0 为了解决这个问题,带来了一个新的持久化选项——混合持久化。将 rdb 文件的内容和增量的 AOF 日志文...

回答于 2021-11-23 15:19

0 赞同

哈希槽又是如何映射到 Redis 实例上呢?

1. 根据键值对的 key,使用 CRC16 算法,计算出一个 16 bit 的值; 2. 将 16 bit 的值对 16384 执行取模,得到 0 ~ 16383 的数表示 key 对应的哈希槽。 3. 根据该槽信息定位到对应的实例。 键值对数据、哈希槽、Redis 实例之间的映射关系如下:

回答于 2021-11-23 15:19

0 赞同

Redis如何做内存优化?

1、控制key的数量:当使用Redis存储大量数据时,通常会存在大量键,过多的键同样会消耗大量内存。Redis本质是一个数据结构服务器,它为我 们提供多种数据结构,如hash,list,set,zset 等结构。使用Redis时不要进入一个误区,大量使用get/set这样的API,把Redis当成Memcached使 用。对于存储相同的数据内容利用Redis的数...

回答于 2021-11-23 15:18

0 赞同

Redis线程模型?

Redis的线程模型包括Redis 6.0之前和Redis 6.0。 下面介绍的是Redis 6.0之前。 Redis 是基于 reactor 模式开发了网络事件处理器,这个处理器叫做文件事件处理器(file event handler)。由于这个文件事件处理器是单线程的, 所以 Redis 才叫做单线程的模型。采用 IO 多路复用机制同时监听多个 Socket,根据 socket 上的...

回答于 2021-11-23 15:17