redis相关
redis相关
盼盼编程
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
redis为什么快
Redis为什么是单线程的 Redis 是基于内存的操作,CPU 不是 Redis 的瓶颈,Redis 的瓶颈最有可能是机器的内存的大小和网络的带宽,而且单线程的性能已经非常高了,就没有必要使用多线程了,所以 Redis 是单进程单线程的。 提示: 如果我们运行的服务器是多核服务器,为了充分利用多核优势我们可以在单台服务器起多个 Redis 服务,或者架设 主从复制、哨兵模式、集群模式等多机方案。 Redis 服务运行时只是处理客户端请求是单进程单线程的,但是服务运行时会有其他进程或线程处原创 2021-01-24 07:21:46 · 421 阅读 · 4 评论 -
redis-dump安装问题
网上搜了很多sources 不能用,用这个 [ec2-user@ip-xxxx ~]$gemsources-l ***CURRENTSOURCES*** https://rubygems.org/ 导出数据 redis-dump-u172.xx.xx.xx:6379-a'1111'-d6>test.json原创 2021-01-04 20:55:02 · 428 阅读 · 4 评论 -
redis缓存策略
Cache-Aside Read-Through Write-Through Write-Behind原创 2020-10-17 10:15:11 · 8769 阅读 · 4 评论 -
redis删除策略
定时删除:当键达到过期时间时,立即执行对键的删除操作 惰性删除:放任键过期不管,但在每次从键空间获取键时,都检查取得的键是否过期,如果过期的话,就删除该键, 定期删除:每隔一点时间,程序就对数据库进行一次检查,删除里面的过期键, ...原创 2020-10-16 21:05:50 · 9317 阅读 · 5 评论 -
redis缓存雪崩
存在同一时间内大量键过期(失效),接着来的一大波请求瞬间都落在了数据库中导致连接异常。 解决方案: 1、也是像解决缓存穿透一样加锁排队。 2、建立备份缓存原创 2020-10-16 21:04:48 · 316 阅读 · 5 评论 -
Redis相比memcached
memcached所有的值均是简单的字符串,redis作为其替代者,支持更为丰富的数据类型 redis的速度比memcached快很多 redis可以持久化其数据原创 2020-10-16 21:04:34 · 9436 阅读 · 4 评论 -
redis过期时间
redis key经常会有过期时间 expire:设定一个key的活动时间(s) ttl:获得一个key的活动时间原创 2020-10-15 21:53:58 · 10340 阅读 · 5 评论 -
redis原子计数
平时开发中,如果涉及多个线程/进程同时操作redis,如果操作的数据过大,这会造成数据混乱。如果是计数类型,则可以用到redis原子操作命令incr来完成。 Redis Incr 命令将 key 中储存的数字值增一 127.0.0.1:6379> set num 1 OK 127.0.0.1:6379> incr num (integer) 2 127.0.0.1:6379> get num # 数字值在 Redis 中以字符串的形式保存 "2" ...原创 2020-09-02 22:03:47 · 815 阅读 · 5 评论 -
redis的flushall命令
redis的flushall命令用来清空redis所有的库,我们平时本地调试redis时都是直接flushall,但到生产环境要注意了,其他的库有可能有生产数据,你要清空redis数据,只能清空你对应的那个库的,默认redis在0号数据库。 使用flushdb清空当前redis所在库数据。 ...原创 2020-09-02 21:23:49 · 6059 阅读 · 4 评论 -
redis之zskiplist
跳跃表(zskiplist)在redis中作为sorted set的底层实现,今天来学习一下。 /* ZSETs use a specialized version of Skiplists */ typedef struct zskiplistNode {//跳跃表节点 sds ele; // 成员对象[必须唯一] double score; // 分值[...原创 2019-11-13 20:37:41 · 10805 阅读 · 2 评论 -
redis之intset
今天来学习一下redis里面的整数集合。 typedef struct intset { //结构体大小为8 uint32_t encoding; //编码方式 uint32_t length; //数组长度 int8_t contents[]; //数组下表从0开始 } intset; encoding是contents数组元素的编码方式,...原创 2019-11-12 23:10:41 · 10294 阅读 · 1 评论 -
redis之adlist.c
adlist是redis实现的双端链表,这个双端链表和数据结构中的双链表类似。双端链表list有一个指向链表和一个指向链表尾的指针,list还包括一些函数指针。 如:void *(*dup)(void *ptr); dup是一个函数指针,它指向的这个函数返回值是void *,参数是void *ptr adlist.h /* adlist.h - A gen...原创 2019-11-06 22:09:17 · 10464 阅读 · 2 评论 -
redis源码之util
util.c里面是一些常见的辅助处理算法,下面看一下。 /* Convert a string representing an amount of memory into the number of * bytes, so for instance memtoll("1Gb") will return 1073741824 that is * (1024*1024*102...原创 2019-11-05 23:55:53 · 10328 阅读 · 1 评论 -
redis源码之sds
sds是redis中一个很重要的数据结构,今天看学一下它源码的实现。 typedef char *sds; /* Note: sdshdr5 is never used, we just access the flags byte directly. * However is here to document the layout of type 5 SDS strings...原创 2019-11-02 22:59:44 · 10392 阅读 · 1 评论 -
redis源码之字符串压缩
redis关于字符串压缩的几个文件分别是:lzf.h,lzfP.h,lzf_c.c,lzf_d.c,下面看一个测试用例。 #include <iostream> #include <string> #include "lzfP.h" #include "lzf.h" using namespace std; int main() { string ...原创 2019-11-01 22:18:53 · 11242 阅读 · 2 评论 -
redis源码epoll用法
学一下redis源码中epoll的使用,由于功力有限不足之处望大家指正。 /* * 创建一个新的 epoll 实例,并将它赋值给 eventLoop */ static int aeApiCreate(aeEventLoop *eventLoop) { aeApiState *state = zmalloc(sizeof(aeApiState)); ...原创 2019-07-20 11:53:35 · 10476 阅读 · 2 评论 -
redis源码客户端和服务端通信过程
最近想学习一下redis源码,先看一下redis通信流程。由于功力有限,不足之处望大家指正。服务端和客户端通信,一般都是服务端先启动,那先从服务端的源码看起。 首先启动服务端会做一些初始化动作,初始化事件处理器状态,先看一下事件处理器状态的结构 //事件处理器的状态 typedef struct aeEventLoop { // 目前已注册的最大...原创 2019-07-18 20:55:48 · 10998 阅读 · 2 评论
分享