![](https://img-blog.csdnimg.cn/20201014180756918.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
redis
文章平均质量分 53
gtfaww
好好学习,天天向上。
展开
-
redis 链表
链表是Redis的列表键的底层实现之一。可以由上图结构看出,redis的链表底层是双端链表,并且由一个list结构表示,list结构为链表提供了表头指针 head 、表尾指针 tail , 以及链表长度计数器 len , 而 dup 、 free 和 match 成员则是用于实现多态链表所需的类型特定函数。总结:redis 链表是一个无换的双端链表,转载 2016-11-09 21:16:32 · 208 阅读 · 0 评论 -
redis 服务器初始化
初始化服务器从启动 Redis 服务器,到服务器可以接受外来客户端的网络连接这段时间, Redis 需要执行一系列初始化操作。整个初始化过程可以分为以下六个步骤:初始化服务器全局状态。 载入配置文件。 创建 daemon 进程。 初始化服务器功能模块。 载入数据。 开始事件循环。 以下各个小节将介绍 Redis 服务器初始化的各个步骤。1. 初始化服务器全局状态re转载 2016-11-21 15:53:38 · 4689 阅读 · 0 评论 -
redis 事件
事件是 Redis 服务器的核心,它处理两项重要的任务:处理文件事件:在多个客户端中实现多路复用,接受它们发来的命令请求,并将命令的执行结果返回给客户端。时间事件:实现服务器常规操作(server cron job)。 本文以下内容就来介绍这两种事件,以及它们背后的运作模式。文件事件Redis 服务器通过在多个客户端之间进行多路复用,从而实现高效的命令请求处理:多个客户转载 2016-11-21 16:06:38 · 336 阅读 · 0 评论 -
Redis Sentinel机制与用法
概述Redis-Sentinel是Redis官方推荐的高可用性(HA)解决方案,当用Redis做Master-slave的高可用方案时,假如master宕机了,Redis本身(包括它的很多客户端)都没有实现自动进行主备切换,而Redis-sentinel本身也是一个独立运行的进程,它能监控多个master-slave集群,发现master宕机后能进行自懂切换。它的主要功能有以下几点转载 2016-11-22 16:54:16 · 358 阅读 · 0 评论 -
Redis 删除匹配通配符的key
看网上是用keys命令删除的,建议用scan命令替代.批量删除匹配通配符的key用到了Linux中的管道和xargs参数:[plain] view plain copy print?redis-cli keys "s*" | xargs redis-cli del 说明:这条命令是在linux下执行的。如果r原创 2016-11-18 10:07:45 · 24285 阅读 · 0 评论 -
redis info command
想练习下英文阅读,翻译了下info 命令,原文:http://redis.io/commands/INFO命令从1.0版本可用。info命令以一种计算机和人类容易理解的方式返回服务器信息和统计信息。可以通过下列可选参数返回部分信息:server: Redis server 信息clients: 客户端连接信息memory: 内存使用信息persistence:翻译 2016-11-24 15:50:08 · 4388 阅读 · 0 评论 -
redis mem_fragmentation_ratio 过大
最近有个业务bug,导致redis存储了很多没用的key,删除后发现mem_fragmentation_ratio过大:127.0.0.1:6379> info memory# Memoryused_memory:104430120used_memory_human:99.59Mused_memory_rss:2633490432used_memory_peak:27098原创 2016-11-24 19:55:59 · 14702 阅读 · 2 评论 -
Redis 4.0 新功能简介
Redis 的作者 antirez 在三天之前通过博客文章《 The first release candidate of Redis 4.0 is out 》发布了 Redis 4.0 的第一个 RC 版本, 在博文中他说, 因为这个新版本的 Redis 出现了多项改变, 所以他决定从原来的 3.x 版本直接跳到 4.0 版本, 以此来强调这次更新的变化之大。本文将对 Redis 4转载 2016-12-08 16:35:47 · 2762 阅读 · 0 评论 -
redis TTL使用
项目里面需要删除超过一周的数据,想到了下redis TTL功能。127.0.0.1:6379> set gtf "gtfaww"OK127.0.0.1:6379> EXPIRE gtf 600(integer) 1127.0.0.1:6379> ttl gtf(integer) 594127.0.0.1:6379> ttl gtf(integer) 549127原创 2016-11-28 13:22:11 · 9814 阅读 · 0 评论 -
redis SDS
SDSRedis在实现上使用了,自定义的SDS(simple dynamic string),来代替C语言传统的字符串表示方式。free 属性的值为 0 , 表示这个 SDS 没有分配任何未使用空间。len 属性的值为 5 , 表示这个 SDS 保存了一个五字节长的字符串。buf 属性是一个 char 类型的数组, 数组的前五个字节分别保存了 'R' 、 'e' 、 'd' 、 'i'转载 2016-11-09 21:07:40 · 364 阅读 · 0 评论 -
redis 压缩列表
压缩列表Ziplist 是由一系列特殊编码的内存块构成的列表,一个 ziplist 可以包含多个节点(entry),每个节点可以保存一个长度受限的字符数组(不以\0 结尾的 char 数组)或者整数,包括:字符数组 长度小于等于 63 ()字节的字符数组长度小于等于 16383 () 字节的字符数组长度小于等于 4294967295 ()字节的字符数组转载 2016-11-15 16:56:51 · 338 阅读 · 0 评论 -
redis 整数集合
整数集合整数集合(intset)用于有序、无重复地保存多个整数值,根据元素的值,自动选择该用什么长度的整数类型来保存元素。举个例子,如果在一个 intset 里面,最长的元素可以用 int16_t 类型来保存,那么这个 intset 的所有元素都以 int16_t 类型来保存。另一方面,如果有一个新元素要加入到这个 intset ,并且这个元素不能用 int16_t 类转载 2016-11-15 16:54:00 · 1293 阅读 · 0 评论 -
redis 跳跃表
跳跃表跳跃表是有序集合的底层实现之一, 除此之外它在 Redis 中没有其他应用。Redis 的跳跃表实现由 zskiplist 和 zskiplistNode 两个结构组成, 其中 zskiplist 用于保存跳跃表信息(比如表头节点、表尾节点、长度), 而 zskiplistNode 则用于表示跳跃表节点。每个跳跃表节点的层高都是 1 至 32 之间的随机数。在同一个跳跃表中, 多个节转载 2016-11-13 19:44:20 · 384 阅读 · 0 评论 -
redis 思维导图
总结了下redis思维导图:原创 2016-11-17 11:28:36 · 2042 阅读 · 0 评论 -
redis 数据库结构
redis 数据库结构 redis所有数据都保存在redisServer结构的db数组中,每个db对象都是一个redisDB结构。每个redisDB结构代表一个数据库。typedef struct redisServer { ... // 数组,保存服务器所有数据库 redisDb *db; ...} redisServer;原创 2016-11-17 13:25:37 · 449 阅读 · 0 评论 -
redis 字典
字典在Redis中被用于实现数据库本身和哈希键,当我们使用HSET,HGET的时候底层就是使用redis的字典实现。实现Redis的底层使用字典作为哈希表的实现,一个哈希表有多个哈希节点,每个节点保存一个键值对。哈希表中,table属性是一个数组,size属性记录了哈希表的大小,也就是table数组的大小,而used属性则记录了哈希表目前已有节点(键值对)的数量转载 2016-11-10 21:14:49 · 428 阅读 · 0 评论 -
使用Redis之前5个必须了解的事情
使用Redis开发应用程序是一个很愉快的过程,但是就像其他技术一样,基于Redis的应用程序设计你同样需要牢记几点。在之前,你可能已经对关系型数据库开发的那一整个套路了然如胸,而基于Redis的应用程序开发也有许多相似的地方,但是你必须牢记以下两点——Redis是个内存数据库,同时它是单线程的。因此,在使用Redis时,你需要注意以下几点:1. 掌控储存在Redis中的所有键数据库转载 2016-11-17 15:11:53 · 889 阅读 · 0 评论 -
redis 用scan 代替keys
众所周知,当redis中key数量越大,keys 命令执行越慢,而且最重要的会阻塞服务器,对单线程的redis来说,简直是灾难,终于找到了替代命令scan。 SCAN cursor [MATCH pattern] [COUNT count]SCAN 命令及其相关的 SSCAN 命令、 HSCAN 命令和 ZSCAN 命令都用于增量地迭代(incrementally原创 2016-11-17 15:51:28 · 28358 阅读 · 0 评论 -
细说Redis监控和告警
对于任何应用服务和组件,都需要一套完善可靠谱监控方案。尤其redis这类敏感的纯内存、高并发和低延时的服务,一套完善的监控告警方案,是精细化运营的前提。本文分几节,细说Redis的监控和告警:1.Redis监控告警的价值2.Redis监控的数据采集3.Redis告警策略4.基于Open Falcon的Redis监控告警方案Redis监控告警的转载 2016-11-17 20:39:39 · 25721 阅读 · 2 评论 -
redis 对象
redis有5种对象:字符串对象、列表对象、集合对象、哈希对象、有序集合对象。 redis中有6中主要数据结构:简单动态字符串(SDS)、链表、字典、跳跃表、整数集合、压缩列表。对象可以以多种方式编码:字符串可以被编码为 raw (一般字符串)或 int (用字符串表示64位数字是为了节约空间)。列表可以被编码为 ziplist 或 linkedlist 。 zi原创 2016-11-18 11:20:17 · 263 阅读 · 0 评论 -
redis 列表使用
工作中需要用到固定大小的队列,用redis列表模拟一个:key = "hw:" + str(sender_id)if RedisClient.llen(key) 60: RedisClient.lpush(key,msg_id)else: RedisClient.rpop(key) #删除末尾 RedisClient.lpush原创 2016-11-28 15:04:58 · 293 阅读 · 0 评论