
redis
文章平均质量分 60
kgduu
这个作者很懒,什么都没留下…
展开
-
redis中集合的相关命令
命令格式说明saddsadd key member [merbers…]添加成员到key所在的集合中scardscard key获取集合中元素的个数sdiffsdiff key [key…]返回第一个集合与后序集合的差集sdiffstoresdiffstore destination key [key…]将key集合与后序集合的差集放到集合destination中sintersinter key [key…]求所有集合的交集sinte原创 2023-09-26 14:55:36 · 285 阅读 · 0 评论 -
redisplusplus笔记
connection主要方法及与reply关系recv使用ReplyUPtr,即unique_ptr,其中ReplyDeleter定义如下。原创 2023-09-18 18:10:08 · 565 阅读 · 0 评论 -
hiredis笔记
【代码】hiredis笔记。原创 2023-09-18 18:01:15 · 278 阅读 · 0 评论 -
hiredis在vs2010上编译不通过及解决方法
然后使用vs2010(带有qt插件)打开.pro文件,编译报错。然后单独创建pro文件,将相应的.c和.h文件加进去。上面的为C99语法,而vs2010不支持。原创 2023-09-14 14:32:33 · 400 阅读 · 0 评论 -
redisplusplus编译
需要C++17,在vs2010上编不行。2、下载rediscplusplus。1、下载hiredis。原创 2023-08-21 11:51:19 · 1018 阅读 · 0 评论 -
redis知识图谱及学习资料(更新中)
redis知识图谱及学习资料(更新中)原创 2022-08-22 15:22:21 · 366 阅读 · 0 评论 -
Redis内存数据库必读的4本书
Redis从一个不为人熟知、只有少量应用的崭新数据库,逐渐变成了内存数据库领域的事实标准。时至今日,经过大量的实践应用,Redis简洁高效、安全稳定的特性已经深入人心。无论是国内还是国外,从五百强公司到小型初创公司都在使用Redis,很多云服务提供商还以Redis为基础构建了相应的缓存服务、消息队列服务以及内存存储服务,当你使用这些服务时,实际上就是在使用Redis。Redis是一个主要由Salvatore Sanfilippo(Antirez)开发的开源内存数据结构存储器,经常用作数据库、缓存以及原创 2022-05-02 13:50:13 · 3568 阅读 · 0 评论 -
spring下redis开发环境搭建
1、添加依赖<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-redis</artifactId> </dependency>原创 2022-03-29 22:20:55 · 229 阅读 · 0 评论 -
windows下安装redis
1、问题redis-server.exe报错29 Mar 21:51:00.406 # Creating Server TCP listening socket 127.0.0.1:6379: bind: No error2、解决按顺序输入如下命令就可以连接成功1.redis-cli.exe2.shutdown3.exit4. redis-server.exeredis.windows.conf...原创 2022-03-29 21:58:21 · 879 阅读 · 0 评论 -
redis使用脚本来更新hash
1、概述遍历key来一个一个发送命令更新,会发送多次网络请求,对性能有一定的影响。2、方案使用pipeline或者脚本。此文主要讲述使用lua脚本原创 2022-03-29 21:03:15 · 1485 阅读 · 0 评论 -
redis中的lua
1、脚本执行执行lua脚本的命令有EVAL script numkeys [key [key ...]] [arg [arg ...]]EVALSHA sha1 numkeys [key [key ...]] [arg [arg ...]]2、脚本管理管理脚本的命令族是script,有SCRIPT FLUSH [ASYNC|SYNC] 清空命令缓存SCRIPT LOAD script将脚本加载到脚本缓存中,但不执行。SCRIPT EXISTS sha1 [sha1 ....原创 2021-12-01 23:04:53 · 667 阅读 · 0 评论 -
redis中的发布订阅
分为频道与模式发布订阅两类1、相关数据结构1.1redisServer /* Pubsub */ dict *pubsub_channels; /* Map channels to list of subscribed clients */ list *pubsub_patterns; /* A list of pubsub_patterns */ dict *pubsub_patterns_dict; /* A dict of pubsub_patter...原创 2021-11-30 21:54:11 · 231 阅读 · 0 评论 -
redis6.0中的多线程
1、初始化初始化是通过InitServerLast中完成的。如果配置的线程数为1,则不创建创建,限制线程数为128。循环创建io线程列表 ,初始化io线程pending标识,线程互斥量,线程。void InitServerLast() { bioInit(); initThreadedIO(); set_jemalloc_bg_thread(server.jemalloc_bg_thread); server.initial_memory_usage = zmall原创 2021-11-23 20:06:40 · 933 阅读 · 0 评论 -
redis中的crc16算法
使用的是循环冗余检验算法。1、算法原理假设数据传输过程中需要发送15位的二进制信息g=101001110100001,这串二进制码可表示为代数多项式g(x) = x^14 + x^12 + x^9 + x^8 + x^7 + x^5 + 1,其中g中第k位的值,对应g(x)中x^k的系数。将g(x)乘以x^m,既将g后加m个0,然后除以m阶多项式h(x),得到的(m-1)阶余项r(x)对应的二进制码r就是CRC编码。h(x)可以自由选择或者使用国际通行标准。redis使用的是crc16-ccit原创 2021-04-11 20:31:25 · 2179 阅读 · 0 评论 -
集群原理及解析
1、概要redis集群是redis提供的分布式数据库方案,集群通过分片(sharding)来进行数据共享,并提供复制和故障转移功能2、节点一个redis集群通常由多个节点组成,在刚开始的时候,每个节点是相互独立的,它们都处于一个只包含自己的集群当中,要组建一个真正可工作的集群,必须将各个节点连接起来,构成一个包含多个节点的集群。连接各个节点的工作可以使用CLUSTER MEET命令来完成,命令的格式为CLUSTER MEET <ip> <port> <cpo原创 2021-03-15 22:09:19 · 1054 阅读 · 0 评论 -
sentinel
1、概要Sentinel是 Redis的高可用性解决方案:由一个或多个Sentinel实例组成的Sentinel系统可以监视任意多个主服务器,以及这些主服务器属下的所有从服务器,并在被监视的主服务器进入下线状态时,自动 将下线主服务器属下的某个从服务器升级为新的主服务器,然后由新的主服务器代替已下线的主服务器继续处理命令请求。2、启动并初始化Sentinel启动有两种方式redis-sentinel /path/to/your/sentinel.conf redis-server /pat原创 2021-03-04 20:57:14 · 697 阅读 · 1 评论 -
复制原理及实现
1、复制功能实现PSYNC命令具有完整重同步和部分重同步两种模式完整重同步用于处理初次复制情况,通过让主服务器创建并发送rdb文件,以及向从服务器发送保存在缓冲区里面的写命令来进行同步 部分重同步则用于处理断线后重复制情况,当从服务器在断线后重新连接主服务器时,如果条件允许,主服务器可以将主从服务器连接断开期间执行的写命令发送给从服务器,从服务器只要接收并执行这些写命令,就可以将数据更新至主服务器当前所处的状态。部分重同步功能由以下三个部分构成主服务器的复制偏移量(replication .原创 2021-02-24 21:55:57 · 976 阅读 · 0 评论 -
服务器
1、命令请求执行过程客户端向服务器发送命令请求 服务器接收并处理客户端发来的命令请求,在数据库中进行操作,并产生命令回复 服务器将命令回复发送给客户端 客户端接收服务器返回的命令回复,并将这个回复打印给用户观看1.1 发送命令请求redis服务器的命令请求来自redis客户端,当用户在客户端中键入一个命令请求时,客户端会将这个命令请求转换成协议格式,然后通过连接到服务器的套接字,将协议格式的命令请求发送给服务器1.2 读取命令请求当客户端与服务器之间的连接套接字因为客户端的写入而变得原创 2021-02-17 22:08:35 · 288 阅读 · 0 评论 -
客户端
对于每个与服务器进行连接的客户端,服务器都会为客户端建立相应的Client结构(客户端状态),这个结构保存了客户端当前的状态信息,以及执行相关功能用到的数据结构。redis服务器状态结构redisSever中的clients属性是一个链表,这个链表保存了所有与服务器连接的客户端的状态结构,对客户端执行批量操作,或者查找某个指定的客户端,都可以通过clients链表来完成。1、客户端属性客户端状态包含的属性可以分为两类一类是比较通用的属性,这些属性很少与特定功能相关,无论客户端执行的是什么工作原创 2021-02-06 19:45:36 · 534 阅读 · 0 评论 -
redis中的事件
redis服务器是事件驱动程序,需要处理以下两类事件文件事件:redis服务器通过套接字与客户端进行连接,而文件事件是服务器对套接字操作的抽象。服务器与客户端的通信会产生相应的文件事件,服务器则通过监听并处理这些事件来完成一系列网络通信操作。时间事件:redis服务器中的一些操作如serverCron函数需要 在给定的时间点执行,而时间事件是服务器对这类定时操作的抽象。1、reactor模式基于reactor模式实现的包含文件、时间事件的事件分发器。文件事件处理器使用I/O多路复用来同时原创 2021-02-04 22:00:22 · 865 阅读 · 1 评论 -
aof持久化
1、redis协议+:表示简单字符串-:表示错误::表示整数$:表示批量字符串*:表示数组请求是由批量字符串组成的数组组成原创 2021-02-02 20:51:15 · 1200 阅读 · 0 评论 -
rdb持久化
1、创建有两个命令来创建rdb文件,save和bgsave。save会阻塞服务器进程,直到rdb文件创建完毕为止,在服务器进程阻塞期间,服务器不能处理任何命令请求。bgsave命令会派生出一个子进程,然后由子进程负责创建rdb文件,服务器进程继续处理命令请求。......原创 2021-01-27 21:37:15 · 249 阅读 · 0 评论 -
redis数据库
1、结构2、过期键删除策略(1)惰性删除(2)定期删除原创 2021-01-25 21:47:48 · 138 阅读 · 0 评论 -
redis缓存设计
1、淘汰策略名称 说明 缺点 LRU 比较最后的访问时间 存在一次冷数据的批量查询而误淘汰大量热点数据 LFU 比较访问次数 会导致最近新加入的数据总会很容易被剔除掉 FIFO 比较创建或者修改时间 有其特殊的作用领域,比如在作业调度、消息队列方面 ...原创 2021-01-16 10:40:03 · 164 阅读 · 0 评论 -
redis中的quicklist
1、结构count:表示ziplist中所有实体的总数len:表示quicklistnode的个数sz:表示ziplist的字节大小原创 2020-12-02 22:23:58 · 403 阅读 · 0 评论 -
redis中的ziplist
1、结构zlbytes:4字节,记录整个压缩列表占用的内存字节数zltail:4字节,记录压缩列表表尾节点距离压缩列表的起始地址有多少字节。zllen:2字节,记录了压缩列表包含的节点数,当这个属性的值小于UINT16_MAX时,这个属性的值就是压缩列表包含节点的数量 ,当这个值等于UINT16_MAX时,节点的真实数量需要遍历整个压缩列表才能计算得出。zlend:1字节,特殊值0xff,用于标记压缩列表的末端。压缩列表节点可以保存一个字节数组或者一个整数。字节数组(1)长度原创 2020-12-01 22:52:04 · 818 阅读 · 0 评论 -
redis中的对象
1、结构type占4位,encoding占4位,lru占24位2、类型及编码原创 2020-11-30 23:24:57 · 493 阅读 · 0 评论 -
redis中的intset
1、结构2、接口原创 2020-11-28 23:00:56 · 248 阅读 · 0 评论 -
redis中的hash
1、结构原创 2020-11-28 22:15:56 · 158 阅读 · 0 评论 -
redis中的双向链表list
1、结构2、接口原创 2020-11-28 20:04:38 · 182 阅读 · 0 评论 -
redis中的string
string类型底层使用数据结构为sds,由sdshdrx+content来表示。1、sdshdrx结构有种,其中flags的低3位用来表示类型原创 2020-11-28 18:08:51 · 294 阅读 · 0 评论 -
redis中的zset
1、组成结构原创 2020-11-20 00:05:53 · 605 阅读 · 0 评论 -
redis持久化
1、持久化redis支持两种方式持久化RDB:以指定的时间间隔数执行据库在某个时间点的快照。AOF:记录了接收的写操作。下次服务启动时执行,重构原始数据集。命令以redisf协议格式追加记录的。当日志过大时后台会重写日志。不持久化:当服务运行时,数据才存在RDB&AOF:当服务启动时,AOF文件用来重构原始数据集用来保证数据完整性。2、优缺点RDB优势是紧凑文件,是数据集在某个时间点的快照。很好的用于备份。在出现故障时容易恢复。是紧凑文件,易于转移到其它数据.原创 2020-11-19 22:52:37 · 111 阅读 · 0 评论 -
redis安装后提示权限问题ERR operation not permitted
安装部署完redis后,提示ERR operation not permitted,原来在安装时,redis.conf被复制到/etc目录下,并且配置文件中requirepass已经取消注释,并且设置了其它值。刚开始在下载的源文件目录下修改redis.conf,一直不起作用。修改方法在/etc/redis.conf文件中,将requirepass注释原创 2015-12-06 18:21:38 · 12175 阅读 · 0 评论 -
Redis安装部署
Redis是一种高级key-value数据库。它跟memcached类似,不过数据可以持久化,而且支持的数据类型很丰富。有字符串,链表,集 合和有序集合。支持在服务器端计算集合的并,交和补集(difference)等,还支持多种排序功能。所以Redis也可以被看成是一个数据结构服务 器。Redis的所有数据都是保存在内存中,然后不定期的通过异步方式保存到磁盘上(这称为“半持久化模式”);也转载 2015-12-06 17:14:27 · 531 阅读 · 0 评论 -
用脚本批量执行redis命令
如果将命令写到txt文件中,形式为每行一个命令:set key value 然后用cat example.txt | redis-cli --pipe会提示All data transferred. Waiting for the last reply...ERR syntax errorLast reply received from server.errors: 1, re原创 2015-11-19 20:17:52 · 6422 阅读 · 0 评论 -
Redis Mass Insertion(--pipe批量插入)
Sometimes Redis instances needs to be loaded with big amount of preexisting or user generated data in a short amount of time, so that millions of keys will be created as fast as possible.This is c转载 2015-12-06 11:12:06 · 1259 阅读 · 0 评论 -
请务必注意 Redis 安全配置,否则将导致轻松被入侵
一、前言前段时间,在做内网影响程度评估的时候写了扫描利用小脚本,扫描后统计发现,内网中60%开放了redis6379端口的主机处于可以被利用的危险状态,因为都是一些默认配置造成的考虑到本社区大部分开发者都会使用redis,特此分享下以便大家可以对自己公司的内网进行一个排查。二、漏洞介绍Redis 默认情况下,会绑定在 0.0.0.0:6379,这样将会将 Red转载 2015-12-16 17:13:26 · 4455 阅读 · 0 评论