redis的过期键删除策略 redis使用了惰性删除和定期删除两种方式。 惰性实现在db.c/expireIfNeeded()中。...redis的定期删除策略 redis会定期执行过期键删除,定期删除函数在expire.c/activeExpireCycle(int),这个函数有两个地方调用,一个是server.c/databasesCron...如果是ACTIVE_EXPIRE_CYCLE_SLOW类型,redis会以正常的过期周期进行清理,时间周期是REDIS_HZ的一个百分比,由ACTIVE_EXPIRE_CYCLE_SLOW_TIME_PERC...这些只是一些系统默认的常量,redis给了我们一个额外的参数effort,让我们去修改上面这些默认变量。...effort变量由redis.conf中的active-expire-effort控制,1到10,设置越大cpu的消耗也会相应增加。
Redis 1、为什么使用Redis数据库 性能极高 – Redis能读的速度是110000次/s,写的速度是81000次/s 。...丰富的数据类型 – Redis支持二进制案例的 Strings, Lists, Hashes, Sets 及 Ordered Sets 数据类型操作。...原子 – Redis的所有操作都是原子性的,意思就是要么成功执行要么失败完全不执行。单个操作是原子性的。多个操作也支持事务,即原子性,通过MULTI和EXEC指令包起来。...丰富的特性 – Redis还支持 publish/subscribe, 通知, key 过期等等特性。
Redis学习 应用场景 Token令牌的生成 短信验证码的code 可以实现缓存数据的查询 帮助实现计数器 分布式锁 延迟操作(对key做时间监听,多长时间过期) 分布式消息中间件 Redis数据类型...List类型 Redis列表是简单的字符串列表,按照插入顺序排序。你可以添加一个元素到列表的头部(左边)或者尾部(右边) 集合(Set) Redis 的 Set 是 String 类型的无序集合。...Redis 中集合是通过哈希表实现的,所以添加,删除,查找的复杂度都是 O(1)。...MySQL与Redis一致性问题 直接清除Redis的缓存,重新读取数据库 使用mq异步订阅mysql binlog实现增量同步 使用alibaba的canal 缓存击穿 热点key过期(或者没有被缓存的...) 数据库有 大量的并发redis没有缓存 过缓存穿透 解决方案 对服务接口api实现限流、用户授权、黑名单和白名单拦截; 从缓存和数据库都查询不到结果的话,一样将数据库空值结果缓存到redis中;
redis pipeline 什么是流水线(pipeline) 首先来看 redis 执行一次操作所需要的时间: 1 次时间 = 1 次网络时间 + 1次命令时间 ?...对比如下: M操作在Redis队列中是一个原子操作,pipeline不是原子操作 pipeline与M操作都会将数据顺序的传送顺序地返回(redis 单线程) M 操作一个命令对应多个键值对,而Pipeline...是多条命令 pipeline注意事项 每次pipeline携带数量不推荐过大,否则会影响网络性能 pipeline每次只能作用在一个Redis节点上 pipeline-Jedis使用 Maven 依赖... redis.clients jedis 2.9.0
yum安装redis 1.yum安装 #前提得配置好阿里云yum源,epel源 #查看是否有redis包 yum list redis #安装redis yum install redis -y #安装好...,启动redis systemctl start redis 2.检测redis是否工作 redis-cli #redis 客户端工具 #进入交互式环境后,执行ping,返回pong表示安装成功...127.0.0.1:6379> ping PONG 源码安装redis,编译安装 大家用过yum,是相当省事好用吧,为什么还要学习源码安装?.../redis-cli //redis的客户端 ./redis-server //redis的服务端 ./redis-check-aof //用于修复出问题的AOF文件 ..../redis-sentinel //用于集群管理 启动redis服务端 启动redis非常简单,直接./redis-server就可以启动服务端了,还可以用下面的方法指定要加载的配置文件: .
,计时器 等等 Redis 有啥特性 多样的数据类型 持久化 集群 事务处理 学习 Redis 需要用到的资料 官网:https://redis.io/ 中文网站:http://www.redis.cn.../ 下载地址: 如何安装 Redis window 下安装 Redis 1、官网上下载 windows Redis 的安装包:https://github.com/tporadowski/redis/...服务端 redis-client redis 客户端 redis-check-aof 和 redis-check-rdb redis 的持久化工具 redis-benchmark redis 的检测工具...:/# redis-server /usr/local/redis/redis-6.2.5/redis.conf root@iZuf66y3tuzn4wp3h02t7pZ:/# redis-cli -p...redis 默认是有 16 个数据库的,咱们可以查看 redis.conf 文件中有定义 # vim /usr/local/redis/redis-6.2.5/redis.conf redis 默认是使用第
一般情况下,redis占用内存超过20GB以上的时候,必须考虑主从多redis实例进行数据同步和备份保证可用性。 rbd保存的文件都是 dump.rdb,都是配置文件当中的快照配置进行生成的。...默认情况:RDB,AOF需要手动开启 redis.conf持久化配置说明 在redis.conf文件当中,存在如下的选项: redis.conf当中RDB的相关配置 #是否开启rdb压缩 默认开启...redis通过shutdown命令关闭服务器请求的时候,此时redis会停下所有工作执行一次save,阻塞所有客户端不再执行任何命令并且进行磁盘写入,写入完成关闭服务器。...修复速度慢一些 存在未知的bug,比如如果重写aof文件的时候突然中断,会有很多奇怪的现象 如何检查redis的性能瓶颈: redis-benchmark 官方推荐的性能测试工具,非常强大,具体的地址为...:https://www.runoob.com/redis/redis-benchmarks.html Redis-cli中调用slowlog get,作用是返回执行时间超过redis.conf中定义的持续时间的命令列表
redis 慢查询 什么是慢查询 MySQL会记录下查询超过指定时间的语句,我们将超过指定时间的SQL语句查询称为慢查询,都记在慢查询日志里。...redis 的生命周期 客户端向Redis服务器发送命令 命令请求在请求队列中排队等待处理 执行命令 返回命令结果 ?...redis 慢查询 慢查询发生在生命周期的第三阶段,是指仅仅执行命令阶段比较慢被称为慢查询。 客户端超时不一定是慢查询,但是慢查询时是客户端超时的一个可能因素。...redis 慢查询相关配置 1. slowlog-max-len 它决定了慢查询日志最多能保存多少条日志,slow log本身是一个内存中的FIFO队列,当队列大小超过slowlog-max-len时,...slowlog len 含义:获取慢查询队列长度 slowlog reset 含义:清空慢查询队列 慢查询运维经验 slowlog-max-len 不要设置过大,默认10ms,通常设置1ms 因为Redis
前言 说到 Redis,大家可能第一反应就是它是当前最受欢迎的 NoSQL 数据库之一。...Redis 特点 Redis 是一个高性能的开源的 key-value 数据库,底层由 C 语言实现,相比于其他同类型产品,有如下特点。.../redis-server.exe 打开另一个窗口,在 Redis 目录下运行另一个 Redis,然后进行设置和取出键值对测试; ..../redis-cli # 解决乱码的启动方式 ....主要介绍了 NoSQL 的相关知识,接着引入 Redis 的特点、优点、应用场景、和其他同类型数据库的区别、然后介绍 Redis 的安装以及安装过程中需要注意的事项,最后则是对 Redis 在日常使用时使用最频繁的一些命令进行了说明
redis 持久化 什么是持久化 redis 将所有数据保持在内存中,对数据的更新将异步地保存在磁盘中 持久化的方式 1. 快照 快照是某时某刻对数据的完整备份。...在: MySQL Dump Redis RDB 被使用。 2....在: MySQL Binlog Hbase HLog Redis AOF 被使用。
redis 发布订阅 发布订阅模式中的角色 发布者(publisher) 订阅者(subscriber) 频道(channel) 如图所示: 发布者发布消息到频道,订阅了频道的订阅者可以收到消息,订阅者可以订阅不同的频道...通信模型 RedisServer中可以创建若干channel 一个订阅者可以订阅多个channel 当发布者向一个频道中发布一条消息时,所有的订阅者都将会收到消息 Redis的发布订阅模型没有消息积压功能
一 Redis Java客户端介绍 Redis Java客户端有很多的开源产品比如Redission、Jedis、lettuce Jedis是Redis的Java实现的客户端,其API提供了比较全面的Redis...连接实例 2)、用获取的redis连接实例执行clusterNodes()方法,实际执行redis服务端cluster nodes命令,获取主从配置信息 3)、解析主从配置信息,先把所有节点存放到nodes...addNodeAddress("redis://192.168.11.153:7000", "redis://192.168.11.153:7001", "redis:/...,而这个范围就是Redis本身。...所以我们才需要把锁构建到Redis中。
Redis发布订阅 Redis 发布订阅(pub/sub)是一种消息通信模式:发送者(pub)发送消息,订阅者(sub)接收消息。微信、 微博、关注系统!...Redis 客户端可以订阅任意数量的频道。 订阅/发布消息图: 第一个:消息发送者, 第二个:频道 第三个:消息订阅者! ?...是使用C实现的,通过分析 Redis 源码里的 pubsub.c 文件,了解发布和订阅机制的底层实现,籍 此加深对 Redis 的理解。...Redis 通过 PUBLISH 、SUBSCRIBE 和 PSUBSCRIBE 等命令实现发布和订阅功能。...微信: 通过 SUBSCRIBE 命令订阅某频道后,redis-server 里维护了一个字典,字典的键就是一个个 频道!
redis学习笔记 Write By CS逍遥剑仙 我的主页: www.csxiaoyao.com GitHub: github.com/csxiaoyaojianxian Email: sunjianfeng...memcahce一个键最多存储1M数据,redis的键最多存储1G数据 2. macos安装redis $ brew install redis 安装完成后 /usr/local/Cellar/redis.../4.0.11/bin 下的几个命令: redis-benchmark 性能测试命令 redis-check-aof / redis-check-rdb 日志检测工具 redis-server...yes 启动redis服务 $ redis-server /usr/local/etc/redis.conf 检查是否启动成功,6379端口 $ redis-cli ping 客户端连接redis服务...$ redis-cli -h localhost -p 6379 # 连接到本地直接输入连接命令即可 $ redis-cli 关闭redis服务 # 方法1 $ redis-cli shutdown
memcahce一个键最多存储1M数据,redis的键最多存储1G数据 2. macos安装redis $ brew install redis 安装完成后 /usr/local/Cellar/redis.../4.0.11/bin 下的几个命令: redis-benchmark 性能测试命令 redis-check-aof / redis-check-rdb 日志检测工具 redis-server...yes 启动redis服务 $ redis-server /usr/local/etc/redis.conf 检查是否启动成功,6379端口 $ redis-cli ping 客户端连接redis服务...$ redis-cli -h localhost -p 6379 # 连接到本地直接输入连接命令即可 $ redis-cli 关闭redis服务 # 方法1 $ redis-cli shutdown...php $redis=new Redis(); $redis->connect('127.0.0.1',6379); // 下单前判断redis队列库存量 $count=
无论是使用单线程模型还是多线程模型,都是为了更好地提升Redis的开发效率和运行性能。...哪怕我们在一个普通的 Linux 服务器上启动 Redis 服务,它也能在 1s 的时间内处理 1000000 个用户请求。...如果这种吞吐量不能满足我们的需求,更推荐的做法是使用分片的方式将不同的请求交给不同的 Redis 服务器来处理,而不是在同一个 Redis 服务中引入大量的多线程操作。...Redis 选择选择单线程模型处理客户端的请求主要还是因为CPU不是Redis服务器的瓶颈,所以使用多线程模型带来的性能提升并不能抵消它带来的开发成本和维护成本,系统的性能瓶颈也主要在网络I/O操作上;...而 Redis 引入多线程操作也是出于性能上的考虑,对于一些大键值对的删除操作,通过多线程非阻塞地释放内存空间也能减少对 Redis 主线程阻塞的时间,提高执行的效率。
Redis 发布订阅 (pub/sub) Redis 事务 Redis 脚本 Redis连接 Redis服务器 Redis GEO Redis Stream Redis 发布订阅 Redis 发布订阅...Redis 脚本 Redis 脚本使用 Lua 解释器来执行脚本。 Redis 2.6 版本通过内嵌支持 Lua 环境。执行脚本的常用命令为 EVAL。...Redis 连接 Redis 连接命令主要是用于连接 redis 服务。...服务器 Redis 服务器命令主要是用于管理 redis 服务。...Redis Stream Redis Stream 主要用于消息队列(MQ,Message Queue),Redis 本身是有一个 Redis 发布订阅 (pub/sub) 来实现消息队列的功能,但它有个缺点就是消息无法持久化
DIctionary Server(Redis) 是一个由Salvatore Sanfilippo写的key-value存储系统,他为VMWare 公司工作,主要就是进行Redis的开发。 ...一、redis启动初探 http://pauladamsmith.com/blog/2011/03/redis_get_set.html 原文 redis 启动图 ? ...会话数据 redis请求处理模型: ?...三、redis源码分析 (1)redis replication (http://www.hoterran.info/redis_replication) (2)redis 持久化(http://www.hoterran.info.../redis_persistence) redis有全量(save/bgsave)和增量(aof)的持久化命令。
如果你的redis是主redis(说明你的redis有从redis),那么在设置内存使用上限时,需要在系统中留出一些内存空间给同步队列缓存,只有在你设置的是“不移除”的情况下,才不用考虑这个因素。...实现 7.1 Golang Redis https://github.com/go-redis/redis If you are using Redis 6, install go-redis/v8:...go-redis/redis/v9 7.1.1 连接redis package main import ( "context" "fmt" "github.com/go-redis/redis/...服务器地址 spring.redis.host=127.0.0.1 # Redis服务器连接端口 spring.redis.port=6379 # Redis数据库索引(默认为0) spring.redis.database...Redis持久化之RDB 11. Redis持久化之AOF 12. 主从复制 13. Redis集群 14.
哨兵模式是一种特殊的模式,首先Redis提供了哨兵的命令,哨兵是一个独立的进程,作为进程,它会独 立运行。其原理是哨兵通过发送命令,等待Redis服务器响应,从而监控运行的多个Redis实例。 ?.../redis.conf:/etc/redis/redis.conf -v /usr/local/database/redis/redis-cluster/sentinel.conf:/etc/redis.../sentinel.conf -d redis:6.0.5 redis-server /etc/redis/redis.conf --appendonly yes # 访问 redis-sentinel.../etc/redis/sentinel.conf # 启动哨兵 [root@centos8 redis-cluster]# docker exec -it 48f8725736c3 redis-sentinel.../etc/redis/sentinel.conf 测试 16:X 30 Jul 2020 07:34:06.679 # oO0OoO0OoO0Oo Redis is starting oO0OoO0OoO0Oo
领取专属 10元无门槛券
手把手带您无忧上云