Redis
文章平均质量分 60
Leo Han
Leo Han
展开
-
redis源码浅析-hash表实现
redis中的hash扩容采用的是一种渐进式hash的策略, 我们都知道,redis执行线程是单线程,如果一个hash表数据量比较大,那么扩容就比较耗费时间,redis采取是的一种渐进式hash策略,采用。可以看到,在向hash桶中进行插入的时候,处于同一个hash桶上的链表,新插入的元素在在链表的头部进行插入的。hash表在初始创建的时候,就是建了一个空的dict ,在添加元素的时候,去进行实际节点的新增。hash表的查找相对来说比较简单,就是通过key的hash找到对应的桶上的链表,然后遍历即可。原创 2023-06-05 19:40:11 · 262 阅读 · 0 评论 -
redis源码浅析-ziplist实现
redis中的list是有多种实现的,其中一种是ziplist,其介绍如下ziplist 是一个经过特殊编码的双向链表,旨在提高内存效率。 它存储字符串和整数值,其中整数被编码为实际整数而不是一系列字符。 它允许在 O(1) 时间内在列表的任一侧进行推送和弹出操作。 但是,由于每个操作都需要重新分配 ziplist 使用的内存,因此实际复杂性与 ziplist 使用的内存量有关。ziplist是一个双向链表结构,是一整块紧凑的内存块,当大小不足需要重新扩展,底层使用je_realloc进行扩展。t原创 2023-05-22 20:21:47 · 705 阅读 · 0 评论 -
redis源码解析- sds实现
redis的sds实现浅析原创 2023-05-17 20:20:48 · 104 阅读 · 0 评论 -
redis 主从同步、集群、持久化
redis有两种方式实现持久化:RDB和AOFAOF:类似数据库WAL 机制,但是redis是先执行命令,然后在记录AOF日志,是一种写后日志而不是咱们常说的写前日志(这样做主要是为了redis在写入日志之前不会对命令进行语法检查,只记录成功的命令,避免了出现记录错误命令的情况,并且命令执行完之后在记录不会阻塞当前的写操作,但是这样也会带来风险:数据可能丢失(执行完命令宕机)、可能阻塞其他他操作(AOF日志需要写磁盘))另外,如果运行时间较长,AOF日志比较快,在重启恢复的时候,较大的AOF会导致恢复较原创 2022-02-13 22:35:39 · 1309 阅读 · 0 评论 -
redis优化,bigkey,hotkey,配置优化,缓存雪崩、缓存穿透、缓存击穿
CPU绑定可以在redis启动的时候绑定固定的cpu,防止cpu切换引起的上线文切换:taskset -c 1 ./redis/bin/redis-server ./reids/conf/redis.confredis6中开启多线程redis.conf配置如下:# 8核cpu可以并行6个io-threads 6内存碎片清理所谓内存碎片,是指申请连续的一段内存空间,系统会找到一块符合申请大小的内存空间,但是如果开始申请了12KB的大小,然后回收,后续如果申请都大于12KB,那么这12KB空原创 2021-04-26 22:22:43 · 561 阅读 · 0 评论 -
redis6中的线程,单线程,多线程
redis6中终于引入了万众期待的多线程支持,之前在大家的传统概念里面,redis都是单线程来处理请求的,那么redis6中多线程又究竟是怎么回事呢?难道redis6中整个架构都调整了?不在是单线程来处理了?要解答上面的问题,我们还需要重redis的历史设计中来找到答案。总所周知,早前的TCP网络处理模式都是基于BIO模型,即所谓的阻塞IO来处理网络请求:一个客户端的请求建立,server端就对应用一个线程来处理这个客户端的读写,如果没有数据传输,则这个线程一直阻塞等待,知道有数据到来。这种模型的缺点原创 2021-04-24 12:22:26 · 275 阅读 · 0 评论 -
redis-cli指定host和密码登录
可以通过如下方式登录:redis-cli -h 127.0.0.1 -a 123456或者先进入客户端:redis-cli -h 127.0.0.1j进入客户端后,输命令:atuh 123456原创 2021-02-25 11:23:08 · 2769 阅读 · 1 评论 -
redis6.0.1安装,多线程配置,解决gcc版本依赖问题,cc1 error: unrecognized command line option -std=c11
redis 6 稳定版本已经发布,增加了新的多线程依赖,赶紧体验下,本次安装采用的redis版本是redis-6.0.1首先下载redis-6.0.1安装包 redis-6.0.1下载完成之后,解压安装:tar -xzvf redis-6.0.1.tar.gzcd redis-6.0.1make发现无法编译,报如下问题:make[1]: Entering directory `/home/hanxueming/redis-6.0.1/src' CC Makefile.depmake原创 2020-05-14 14:59:27 · 4814 阅读 · 0 评论 -
查看redis内存使用情况
查看redis内存使用情况,在reids客户端命令行使用:info memory首先连接redis客户端:./redis-cli -h 127.0.0.1 -p 6379查看内存情况:127.0.0.1:6379> info memory# Memoryused_memory:102045712 #redis使用的总内存大小,byte为单位used_memory_human:97.32Mused_memory_rss:140541952used_memory_rss_hu原创 2020-05-13 17:58:59 · 4667 阅读 · 0 评论