随笔分类 -  Redis

摘要:2024.6.30 1.避免线程切换和竞争产生的消耗 2.避免同步机制的开销 3.实现简单,底层数据结构的设计无需考虑线程安全 4.Redis6.0版本引入了多线程的目的是解决Redis在网络 I/O 上的性能瓶颈 阅读全文
posted @ 2024-06-30 11:15 sellingpear 阅读(17) 评论(0) 推荐(0)
摘要:2024.6.28 1.Redis中SDS(简单动态字符串) SDS在C字符串的基础上加入了free和len字段 SDS可以存取二进制数据 由于SDS记录了长度,可以杜绝缓冲区溢出 对于C字符串,如果要修改字符串,必须要重新分配内存,而对于SDS,由于可以记录len和free,因此解除了字符串长度和 阅读全文
posted @ 2024-06-28 22:34 sellingpear 阅读(21) 评论(0) 推荐(0)
摘要:2024.6.28 1.hash是一个string的key和value的映射表 2.Redis 使用ziplist(压缩列表)来实现需要满足hash类型时当哈希类型元素个数小于hash-max-ziplist-entries配置(默认512个但可以进行配置) 3.hash的应用场景是存储对象信息 阅读全文
posted @ 2024-06-28 22:28 sellingpear 阅读(15) 评论(0) 推荐(0)
摘要:2024.6.26 1.Redis 使用ziplist(压缩列表)来实现zset类型时需要满足zset类型元素个数小于zset-max-ziplist-entries 2.Redis 使用ziplist(压缩列表)来实现zset类型时需要满足zset类型所有member的长度小于zset-max-z 阅读全文
posted @ 2024-06-26 23:12 sellingpear 阅读(29) 评论(0) 推荐(0)
摘要:2024.6.25 1.Redis的事务保证了一致性和隔离性,但并不保证原子性和持久性是正确的说法 2.Redis在执行阶段某个命令报出了错误,则只有报错的命令不执行,其他命令顺利执行 3.Redis在组队阶段某个命令报出了错误,则执行时整个队列都会被取消 4.Redis不支持回滚。 5.Multi 阅读全文
posted @ 2024-06-25 22:50 sellingpear 阅读(11) 评论(0) 推荐(0)
摘要:2024.6.24 1.flushall 删除所有数据库的所有 key 2.ttl key时返回-2,表示该key已经过期 3.dbsize查看当前数据库的key的数量 4.select用于切换数据库 5.linsert <key> before <value> <newvalue>的返回值是新的列 阅读全文
posted @ 2024-06-24 23:13 sellingpear 阅读(33) 评论(0) 推荐(0)
摘要:2024.6.24 1.lru记录对象最后一次被命令程序访问的时间,占据的比特数不同的版本不同,4.0版本占24个比特,在2.6版本占22比特, 2.type字段表示对象的类型,占4个比特 3.encoding表示对象的内部编码,占4个比特 4.refcount记录的是该对象被引用的次数,占4个字节 阅读全文
posted @ 2024-06-24 23:09 sellingpear 阅读(13) 评论(0) 推荐(0)
摘要:2024.6.23 1.Redis命令搭建集群指定主从关系使用cluster replicate命令 2.各节点在启动节点阶段是独立的,并没有建立联系 3.集群配置文件由Redis节点维护,不需要人工修改 4.当数据库中的16384个槽都分配了节点时,集群处于上线状态。 阅读全文
posted @ 2024-06-23 17:47 sellingpear 阅读(16) 评论(0) 推荐(0)
摘要:概念及特点 简单来说就是每台Redis服务器上存储不同的内容,大大节约了内存。Redis-Cluster采用无中心结构特点如下: 1.所有的Redis节点彼此互联(通过PING-PONG机制)。 2.内部使用二进制协议优化传输速度和带宽。 3.一个节点的fail是通过集群中半数以上的节点都检测到失效 阅读全文
posted @ 2021-12-08 00:32 sellingpear 阅读(60) 评论(0) 推荐(0)
摘要:哨兵模式是干啥的? 1.监控主、从服务器是否正常工作。 2.主服务器出现故障自动将从服务器升级为主服务器。 工作方式 每个Sentinel(进程)以每秒一次的频率向整个集群中的主服务器、从服务器和其他哨兵发送PING请求。如果说一个实例在设置时间之内没有返回响应,这个实例就会被该哨兵标记为主观下线。 阅读全文
posted @ 2021-12-08 00:02 sellingpear 阅读(140) 评论(0) 推荐(0)
摘要:主从复制的原理 从服务器向主服务器发送SYNC(同步)请求。主服务器收到这个请求之后,(这个时候就不是单线程啦)开始生成RDB(快照文件),并且使用缓冲区记录之后所有的写操作命令。快照文件生成完毕之后,主服务器,向从服务器发送快照文件,这期间也继续记录执行过的写命令。从服务器接收快照文件完毕之后,丢 阅读全文
posted @ 2021-12-07 23:46 sellingpear 阅读(80) 评论(0) 推荐(0)
摘要:1.缓存和数据库的双写一致性问题 如果有缓存,那么就从缓存中完成查询操作了,所以一定要保证缓存中的数据和数据库中的数据是一致的。 解决的方案: 1.写一个接口,每次做写操作的时候,删除缓存中对应的数据。这样做耦合度高,也有可能会出现接口调用失败的情况。 2.使用消息中间件。 2.缓存的并发竞争问题 阅读全文
posted @ 2021-12-07 23:11 sellingpear 阅读(703) 评论(0) 推荐(0)
摘要:1.快照模式 也就是RDB,比较快,实际生产中常用,可能会有丢失的数据。 2.AOF 记录Redis执行的写命令,Redis重启后,重新执行这些命令。 优点是数据保存完整,但是速度会比较慢。 2024.6.26 1.RDB文件格式中的 check_sum字段数值用来在载入时判断文件是否损坏 2.RD 阅读全文
posted @ 2021-12-07 22:51 sellingpear 阅读(34) 评论(0) 推荐(0)
摘要:1.纯内存操作,如今最强的key-value数据库。支持事务化、持久化。 2.单线程操作,避免了频繁的上下文切换。此处的单线程只是指网络IO以及key-value的读写由一个线程完成。但持久化和集群支撑模块是多线程的。 3.采用了非阻塞IO多路复用机制。也就是单个线程,通过跟踪每个IO流的状态管理多 阅读全文
posted @ 2021-12-07 22:35 sellingpear 阅读(629) 评论(0) 推荐(0)
摘要:String:最常用的,也就是字符串。 Hash:也叫散列。 List:简单的字符串列表。 Set:无序字符串集合。 Sorted set:有序字符串集合。 2024.6.24 1.Redis中string数据类型的数据结构 string采用预分配冗余空间的方式来减少内存的频繁分配 string的数 阅读全文
posted @ 2021-12-07 22:27 sellingpear 阅读(43) 评论(0) 推荐(0)
摘要:Redis分布式锁Lua脚本实现 获取锁 if (redis.call ('EXISTS',KEYS[1] == 0)) then //判断锁不存在 redis.call ('HSET',KEYS[1], ARGV[1], 1); redis.call ('EXPIRE', KEYS[1], ARG 阅读全文
posted @ 2021-12-04 12:03 sellingpear 阅读(58) 评论(0) 推荐(0)