
Redis
文章平均质量分 83
石臻臻的杂货铺
优快云博客之星Top5 ,石臻臻《Kafka运维与实战宝典》电子书作者(可找我:szzdzhp001下载)、 Kafka Contributor 、 KnowStreaming PMC、Nacos Contributor、华为云 MVP 。 滴滴Kafka技术专家 、
展开
-
【Redis】位图以及位图的使用场景(统计在线人数和用户在线状态)
位图位图的最大优点之一是,它们在存储信息时通常可以节省大量空间位图不是一个真实的数据类型,而是定义在字符串类型上的面向位的操作的集合。由于字符串类型是二进制安全的二进制大对象,并且最大长度是 512MB,适合于设置 2^32^个不同的位。位操作分为两组:常量时间单个位的操作,像设置一个位为 1 或者 0,或者获取该位的值。对一组位的操作,例如计算指定范围位的置位数量。 1字节=1B=2^3b=8位 1KB=2^10^B 1MB=2^10^KB 512MB=2^9^ X 2^10^原创 2020-11-10 17:27:22 · 2540 阅读 · 4 评论 -
【Redis】redis安装与客户端redis-cli的使用(批量操作)
在Centos中安装Redis安装步骤先创建一个文件夹用于存放redismkdir /data/redis & cd /data/redis1.使用以下命令下载,提取和编译Redis: wget https://download.redis.io/releases/redis-6.0.9.tar.gz tar xzf redis-6.0.9.tar.gz cd redis-6.0.9 make make test最新稳定版本请看 https://redis.io/downloa原创 2020-11-09 15:56:45 · 2490 阅读 · 3 评论 -
基于Redis实现DelayQueue延迟队列设计方案(附源码)
应用场景创建订单10分钟之后自动支付叫预约单专车出行前30分钟发送短信提示订单超时取消…等等…实现方式最简单的方式,定时扫表;例如每分钟扫表一次十分钟之后未支付的订单进行主动支付 ;优点: 简单缺点: 每分钟全局扫表,浪费资源,有一分钟延迟使用RabbitMq 实现 RabbitMq实现延迟队列优点: 开源,现成的稳定的实现方案;缺点: RabbitMq是一个...原创 2019-08-08 15:50:29 · 153281 阅读 · 41 评论 -
【Redis】Redis AOF持久化
AOF持久化的实现AOF 持久化分为 : 命令追加(append)->文件写入->文件同步(sync) 三个步骤写入AOF文件不就是同步了吗?这里的写入和 同步的区别是什么?这里的写入AOF文件, 在现代操作系统中,用户调用了write()函数来将数据写入到文件中,但是操作系统通常会将写入的数据暂时保存在一个 ** 内存缓冲区** 里面,等这个缓冲区的空间被填满、或者...原创 2019-03-28 14:29:19 · 4387 阅读 · 1 评论 -
【Redis】Redis的复制
Redis支持简单的主从(master-slave)复制功能,当主Redis服务器更新数据时能将数据同步到从Redis服务器配置在Redis中使用复制功能非常容易在从Redis服务器的redis.conf中写入slaveof masteripmasterport即可,主Redis服务器不需要做任何配置在启动Redis服务器的时候,指定主服务器,redis-server --slave...原创 2019-03-31 11:06:14 · 4204 阅读 · 0 评论 -
【Redis】Redis+Lua的使用注意事项
1.Redis 的操作为什么是的原子性的? 因为redis是单线程的!Redis的API是原子性的操作2.Redis + Lua 形式为什么是原子性的? Redis从2.6.0版本开始提供了eval命令,通过内置的Lua解释器,可以让用户执行一段Lua脚本并返回数据。因为Redis单线程模型的特点,可以保证多个命令的原子性; Redis的API是原子性的操作 eval是redis...原创 2019-03-19 14:01:52 · 6474 阅读 · 0 评论 -
【Redis】Redis数据库
Redis读写键空间时的维护操作当redis命令对数据库进行读写时,服务器不仅会对键空间执行指定的读写操作,还会执行一些额外的维护操作在读取一个键之后(读写都会对键进行读取),服务器会根据键是否存在,来更新服务器的键空间命中(hit)次数或键空间不命中(miss)次数在读取一个键之后,服务器会更新键的LRU(最后一次访问时间),这个值可以用于计算键的空闲时间如果服务器发现这个键过期了...原创 2019-03-21 19:04:51 · 4171 阅读 · 0 评论 -
【Redis】Redis的五种数据结构
字符串字符串类型分别使用 REDIS_ENCODING_INT 和 REDIS_ENCODING_RAW 两种编码:REDIS_ENCODING_INT 使用 long 类型来保存 long 类型值。REDIS_ENCODING_RAW 则使用 sdshdr 结构来保存 sds (也即是 char* )、 long long 、double 和 long double 类型值。换句...原创 2019-03-21 15:46:55 · 4363 阅读 · 0 评论 -
【Redis】RedisObject 对象
在前面介绍各个底层数据结构时有提到, Redis 的每一种数据类型,比如字符串、列表、有序集, 它们都拥有不只一种底层实现(Redis 内部称之为编码,encoding), 这说明, 每当对某种数据类型的键进行操作时, 程序都必须根据键所采取的编码, 进行不同的操作。Redis 构建了自己的类型系统, 这个系统的主要功能包括:redisObject 对象。基于 redisObject ...原创 2019-03-21 10:39:23 · 4500 阅读 · 0 评论 -
【Redis】三、Redis整数集合和压缩列表
整数集合整数集合(intset)是集合建的底层实现之一,当一个集合只包括整数值的元素,并且这个集合的元素数量不多时,Redis就会用整数集合作为集合建的底层实现 typedef struct intset{ //编码方式 uint32_t encoding; //集合包含的元素数量 uint32_t length; //保存元素的数组 int8_t content...原创 2019-03-20 16:47:21 · 4154 阅读 · 0 评论 -
【Redis】二、Redis中字典结构
Redis的字典使用哈希表作为底层实现,一个哈希表里面有多个哈希表节点,而每个哈希表节点保存了字典中的一个键值对(key-value)1.字典的实现说白了,基本上就是跟Java中的HashMap一样一样的1.1 哈希表typedef struct dictht{ //哈希表数组 数组中的每个元素都指向 dict.h/dictEntry结构的指针, //每个dictEntry结构保存...原创 2019-03-19 22:02:13 · 4192 阅读 · 0 评论 -
【Redis】一、Redis的简单动态字符串SDS
Redis没有直接使用C语言传统的字符串表示(以空字符 \0 结尾的字符数组),而是构建了一种名为简单动态字符串SDS的抽象类型,并将SDS用作Redis的默认字符串表示。SDS的数据结构struct sdshdr{ //记录buf数组中已经使用字节的数量 //等于SDS所保存字符串长度 int len; //记录buf数组中未使用字节数量 int free; //字节数组 用...原创 2019-03-19 17:30:15 · 4211 阅读 · 1 评论