
redis
hello_world!
java coder
展开
-
Windows环境下安装Redis
下载地址:https://github.com/MicrosoftArchive/redis/releasesRedis 支持 32 位和 64 位。这个需要根据你系统平台的实际情况选择,这里我们下载Redis-x64-xxx.zip压缩包到 D 盘redis文件夹下。网盘下载:链接:https://pan.baidu.com/s/1ZRzMaS5eqCPaotX5DljY3w&shfl=sharepset提取码:spf0一.Redis临时服务1.打开c...原创 2021-09-22 18:22:24 · 128 阅读 · 0 评论 -
Redis--各个数据类型最大存储量
Strings类型:一个String类型的value最大可以存储512MLists类型:list的元素个数最多为2^32-1个,也就是4294967295个。Sets类型:元素个数最多为2^32-1个,也就是4294967295个。Hashes类型:键值对个数最多为2^32-1个,也就是4294967295个。Sorted sets类型:跟Sets类型相似。原文地址:https://redis.io/topics/data-types...原创 2021-06-24 16:25:46 · 322 阅读 · 0 评论 -
谈谈redis的热key问题如何解决
引言讲了几天的数据库系列的文章,大家一定看烦了,其实还没讲完。。。(以下省略一万字)。今天我们换换口味,来写redis方面的内容,谈谈热key问题如何解决。其实热key问题说来也很简单,就是瞬间有几十万的请求去访问redis上某个固定的key,从而压垮缓存服务的情情况。其实生活中也是有不少这样的例子。比如XX明星结婚。那么关于XX明星的Key就会瞬间增大,就会出现热数据问题。ps:hot key和big key问题,大家一定要有所了解。本文预计分为如下几个部分热key问题 如何发现 业内原创 2020-08-04 14:57:45 · 661 阅读 · 0 评论 -
Redis集群管理
1.进入集群客户端任意选一个redis节点,进入redis 所在目录cd /redis 所在目录/src/./redis-cli -h 本地节点的ip -p redis的端口号 -a 密码[root@mysql-db01 ~]# redis-cli -h 10.0.0.51 -p 637910.0.0.51:6379> 2.查看集群中各个节点状态集群(cluster)cluster info 打印集群的信息cluster nodes 列出...原创 2020-08-04 14:52:02 · 724 阅读 · 0 评论 -
Nginx服务器之负载均衡策略(6种)
一、关于Nginx的负载均衡 在服务器集群中,Nginx起到一个代理服务器的角色(即反向代理),为了避免单独一个服务器压力过大,将来自用户的请求转发给不同的服务器。详情请查看我的另一篇博客。二、Nginx负载均衡策略 负载均衡用于从“upstream”模块定义的后端服务器列表中选取一台服务器接受用户的请求。一个最基本的upstream模块是这样的,模块内的server是服务器列表: #动态服务器组 upstream dynamic_zuoyu { .原创 2020-08-04 14:47:08 · 246 阅读 · 0 评论 -
Redis-Jedis使用Scan实现redis前缀key查找
我们都知道Redis是单线程的,因此我们在使用一些命令(例如keys)的时候需要非常谨慎,可能一不小心就会阻塞进程,进而引起雪崩,这时候 scan命令就有了比较明显的优势;scan命令简介: SCAN 命令(在Redis2.8版本引入)是一个基于游标的迭代器(cursor based iterator): SCAN 命令每次被调用之后, 都会向用户返回一个新的游标, 用户在下次迭代时需要使用这个新游标作为 SCAN 命令的游标参数, 以此来延续之前的迭代过程,当 SCAN 命令的游标参数被设置为原创 2020-08-04 14:44:48 · 2780 阅读 · 0 评论 -
redis未设置idle超时时间导致连接过多
今天ELK收集日志的时候,发现收集失败,查找各方面原因,最后在redis日志里面发现报错:[2489] 02 Jun 10:43:42 # Error allocating resoures for the client错误是无法为客户端分配资源,查看redis连接数:# redis-cli info | grep connected connected_clients:5036connected_slaves:0客户端的连接竟然有达到5000多查看客户端连接情况:red...原创 2020-08-04 14:43:13 · 1587 阅读 · 0 评论 -
redis客户端管理
目录【1】客户端概述 【1.1】client list:查看当前实例所有连接 【1.2】输入缓冲区问题 【1.3】输出缓冲区问题 【1.4】监控查看输入输出缓冲区异常 【1.5】存活监控 【2】客户端操作 【2.1】Client setName / Client getName 【2.2】client kill 【2.3】client pause 【2.4】monitor 【3】客户端配置参数 读书笔记:《redis开发与运维》回到顶部...原创 2020-08-04 14:41:24 · 286 阅读 · 0 评论 -
Redis系列六:redis缓存失效策略
https://www.cnblogs.com/dudu2mama/p/11366292.html一、背景线上你写代码的时候,想当然的认为写进 redis 的数据就一定会存在,后面导致系统各种 bug,谁来负责?常见的有两个问题:往 redis 写入的数据怎么没了?可能有同学会遇到,在生产环境的 redis 经常会丢掉一些数据,写进去了,过一会儿可能就没了。我的天,同学,你问这个问题就说明 redis 你就没用对啊。redis 是缓存,你给当存储了是吧?啥叫缓存?用内存当缓存。内存是原创 2020-08-03 15:11:31 · 1879 阅读 · 0 评论 -
Redis缓存系列:你所不知道的Redis热点问题以及如何发现热点
前言“这个商品不错,大家来看啊“,每个平台都有会有些大卖的商品,简称为爆品。这些商品会有个特点,就是访问量特别大。我们专业上面可以称之为热点数据,在处理这些热点商品时,系统需要做一些特殊的处理。缓存化针对热点商品这些类型的数据,要考虑到访问量比较大,大家首先想到的是缓存,上redis缓存,这点肯定没有错。系统框架如下:上图中,先从缓存中获取,没有再到DB获取,并保存到缓存中。但有个问题会产生,热点数据的访问会比较大,如果缓存一旦失效,所有请求同一时刻,会打到DB上面,DB肯定会崩溃。那怎原创 2020-08-03 15:09:47 · 2717 阅读 · 0 评论 -
缓存淘汰算法 LRU 和 LFU
缓存是一个计算机思维,对于重复的计算,缓存其结果,下次再算这个任务的时候,不去真正的计算,而是直接返回结果,能加快处理速度。当然有些会随时间改变的东西,缓存会失效,得重新计算。比如缓存空间只有2个,要缓存的数据有很多,1,2,3,4,5,那么当缓存空间满了,需要淘汰一个缓存出去,其中淘汰算法有 LRU,LFU,FIFO,SC二次机会,老化算法,时钟工作集算法等等。算法流程LRU,最近最少使用,把数据加入一个链表中,按访问时间排序,发生淘汰的时候,把访问时间最旧的淘汰掉。比如有数据 1,2,1,原创 2020-08-03 15:04:41 · 309 阅读 · 0 评论 -
使用rdbtools工具来解析redis rdb文件
https://www.cnblogs.com/cheyunhua/p/10598181.html工欲善其事必先利其器,日常工作中,好的工具能够高效的协助我们工作;今天介绍一款用来解析redis rdb文件的工具,非常好用。会之,受用无穷! 一、rdbtools工具介绍源码地址:https://github.com/sripathikrishnan/redis-rdb-tools/redis-rdb-tools 是一个 python 的解析 rdb 文件的工具,在分析内存的时候,我们主要用.原创 2020-08-03 15:02:58 · 972 阅读 · 0 评论 -
redis集群负载均衡失效
集群配置公司内部使用cache-client (搜狐开源缓存https://github.com/sohutv/cachecloud) 一个取经团或者某个中心下使用一个appId(项目只需要配置appId,引入cache-client依赖即可使用缓存)原因分析拉取我们取经团下部分key分析,确认是否为这部分key导致(通过RDB文件备份起来;并以json格式解析存储) – 由于项目使用key过多 没有发现问题 确认key或value中是否有 “{” 或 “}” ,因为有这两个字符会导致根据k.原创 2020-08-03 14:59:23 · 507 阅读 · 0 评论 -
Redis单实例数据迁移到集群
目录环境说明 迁移步骤 查看集群状态及节点槽分布 把101:7001和102:7000两个master的slots转移到101:7000上 查看转以后槽点分配 把192.168.41.101:6379的appendonly.aof 文件复制到101:7000的aof文件目录下 重启101:7000节点加载aof文件 查看数据是否正确 将101:7000的槽 均匀分配给其他两个master节点 返回目录环境说明单机redis192.168.41.101:.原创 2020-07-18 10:15:31 · 789 阅读 · 0 评论 -
Redis 5.0 redis-cli --cluster
背景: Redis Cluster 在5.0之后取消了ruby脚本redis-trib.rb的支持(手动命令行添加集群的方式不变),集合到redis-cli里,避免了再安装ruby的相关环境。直接使用redis-clit的参数--cluster 来取代。为方便自己后面查询就说明下如何使用该命令进行Cluster的创建和管理,关于Cluster的相关说明可以查看官网或则Redis Cluster部署、管理和测试。环境:系统版本:Ubuntu 14.04Redis版本:5.0.5机...原创 2020-07-18 10:14:01 · 1464 阅读 · 0 评论 -
SpringBoot整合redis——redisTemplate(一)
pom.xml <!--redis--> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-redis</artifactId> </dependency> <!.原创 2020-07-18 10:12:24 · 421 阅读 · 0 评论 -
Redis单实例数据迁移到集群
迁移步骤:(1)停掉项目,停止对redis单实例的数据写入。(2)登录单实例redis客户端通过命令keys *查看当前单实例缓存的所有数据条数,记录下来。(3)假如单实例redis同时开启了RDB和AOF,只要AOF文件就可以了,因为当AOF和RDB同时存在的时候,Redis还是会先加载AOF文件的,在单实例redis上执行BGREWRITEAOF保存数据,如果没有开启AOF只开了RDB则执行SAVE,SAVE 命令执行完之后会返回OK。本项目的Redis只开了RDB,故执行save.原创 2020-07-18 10:10:36 · 1163 阅读 · 0 评论 -
开启aof功能的redis通过rdb方式数据恢复真是繁杂
数据既要恢复,配置文件还要同时配置rdb和aof功能!看似简单,其实过程真是繁琐!如果开启aof功能,redis优先从aof文件加载数据,即使appendonly.aof不存在也是同样道理,其会先创建空数据的appendonly.aof文件,然后从空数据的appendonly.aof加载数据启动redis;1,修改配置文件方式关闭aof备份功能,但要开启rdb备份功能;2,一定要开启热修改配置功能,这步很重要,所以单独列一条来写3,把备份的rdb文件拷贝过去,同时重启redis4,通过命原创 2020-07-18 10:08:45 · 458 阅读 · 0 评论 -
Redis--不重启切换RDB到AOF
RDB切换到AOF在上篇博客中,讲了redis的两种持久化方式,RDB和AOF,有时需要将RDB切换到AOF,生产环境又不能关机,可能会造成重大的损失。我们可以通过命令的方式来切换。1.准备redis.conf配置文件,确保开启rdb功能,配置参数如下port 6379daemonize yespidfile /data/redis.pid loglevel notice logfile "/data/redis.log"dir /data/dbfilename dbmp.r原创 2020-07-18 10:02:21 · 677 阅读 · 0 评论 -
redis禁用危险命令
1、打开redis配置文件vim redis.conf2、找到##SECURITY##区域,按照Example配置rename_command:/rename_command#n下一个,N上一个3、禁用命令rename-command KEYS ""rename-command FLUSHALL ""rename-command FLUSHDB ""rename-command CONFIG ""4、重命名命令rename-command KEYS "XXXXXX...原创 2020-07-18 09:53:58 · 882 阅读 · 0 评论 -
redis怎么将rdb文件和aof文件还原数据库
1 AOF -----> appendonly yes 2 cp appendonly.aof 到redis的数据库目录也就是配置文件里面的dir关键字 3appendfilename重启服务2 RDB -----> appendonly no 2 cp dump.rdb到redis数据库目录也就是配置文件里面的dir关键字 3 重启服务另外可以参考以下这篇文章 http://www.cnblogs.com...原创 2020-07-18 09:50:07 · 781 阅读 · 0 评论 -
redis集群报错:(error) MOVED 的解决方法
用redis-cli进行数据操作报错(error) MOVED 的解决方法报错示例:(base) wdh@wdh:~$ redis-cli -h 172.17.0.1 -p 6391172.17.0.1:6391> get name(error) MOVED 5798 172.100.0.1:6392172.17.0.1:6391>1234报错原因:没有用集群模式连接(连接节点命令 没有加 -c 参数)解决办法:用 -c 参数连接redis集群节点:redis-cli.原创 2020-07-17 14:27:47 · 9116 阅读 · 0 评论 -
redis集群搭建详细过程
redis版本:redis-5.0.3.tar.gz操作系统:完全新安装的centos7.6系统使用一台虚拟机模拟6个redis节点,3个master,3个slave,虚拟机IP为192.168.220.11和使用不同的IP创建集群基本过程一致,为了方便,就不创建多个虚拟机了。开始搭建: yum install -y wget gcc systemctl stop firewalld.service systemctl disable firewalld.servi.原创 2020-07-17 14:25:40 · 586 阅读 · 0 评论 -
spring boot以lettuce连接池整合redis-cluster(单机及集群版)
一.添加相关pom依赖commons依赖主要应用于单机版<!--redis--><dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-redis</artifactId></dependency><!-- redis依赖commons-pool 这个依赖一定要添...原创 2020-07-17 11:30:24 · 4194 阅读 · 2 评论 -
Redis系列十:Pipeline详解
https://blog.youkuaiyun.com/w1lgy/article/details/84455579一、pipeline出现的背景:redis客户端执行一条命令分4个过程: 发送命令-〉命令排队-〉命令执行-〉返回结果1这个过程称为Round trip time(简称RTT, 往返时间),mget mset有效节约了RTT,但大部分命令(如hgetall,并没有mhgetall)不支持批量操作,需要消耗N次RTT ,这个时候需要pipeline来解决这个问题二、pepeline的性能.原创 2020-07-17 11:17:49 · 938 阅读 · 0 评论 -
Springboot整合redis(一般人都能看懂的Lettuce版本)
https://www.cnblogs.com/wxxujian/p/12859616.html去年学习的Redis,刚刚学习完就迫不及待的在实战中用了一下,走了很多坑不过幸好都填上了,需求的不断变化发现用不上Redis,一开始去掉了,后来想想加进来比较合适。这篇文章主要讲解Springboot如何整合开发Redis实现一个基本的案例。使用的是目前Springboot2.x的Lettuce版本。希望对你有帮助。这里因为不是专门讲解Redis的,所以假定你已经学习了Redis,只是希望在SpringB原创 2020-07-17 11:14:14 · 1724 阅读 · 1 评论 -
Redis的三个框架:Jedis,Redisson,Lettuce
Jedis api 在线网址:http://tool.oschina.net/uploads/apidocs/redis/clients/jedis/Jedis.htmlredisson 官网地址:https://redisson.org/redisson git项目地址:https://github.com/redisson/redissonlettuce 官网地址:https://lettuce.io/lettuce git项目地址:https://github.com/lettuce-原创 2020-07-17 11:09:40 · 195 阅读 · 0 评论 -
java项目中配置redis-cluster集群的两种方式
本文分两部分:(1)jedisCluster(2)Spring-Data-Redis集群配置和RedisTemplate用法我这里是在本机上搭建的3主3从6个redis实例。一,jedisClusterjar引入:<dependency> <groupId>redis.clients</groupId> <artifactId>jedis</artifactId> <version>2.4.2...原创 2020-07-10 21:27:06 · 2502 阅读 · 0 评论 -
JedisCluster 整合 Spring
依赖<dependency> <groupId>redis.clients</groupId> <artifactId>jedis</artifactId> <version>2.9.0</version> <type>jar</type> <scope>compile</scope></dependency>.原创 2020-07-10 21:25:34 · 288 阅读 · 0 评论 -
使用Spring编程式初始化JedisCluster
https://my.oschina.net/u/1445585/blog/1359371网络上大多都是使用XML配置进行初始化,这里使用Java代码进行初始化。@Configuration@PropertySource(value = "classpath:config.properties")public class RedisClustersConfiguration { @Value("${redis.pool.maxTotal}") private int maxT原创 2020-07-10 21:24:09 · 514 阅读 · 0 评论 -
redis集群+JedisCluster+lua脚本实现分布式锁
在这片文章中,使用Jedis clien进行lua脚本的相关操作,同时也使用一部分jedis提供的具有原子性set操作来完成值和过期时间的同时设置。使用lua脚本根本原因也是为了保证我们两个redis操作之间的原子性,使分布式锁更加可靠。JedisCluster相关代码配置在博主的实现例子中使用redis集群实现分布式锁,所以在开始分布式锁实现之前需要进行JedisCluster的相关配置。博主是在spring boot的下进行开发,JedisCluster需要做的配置如下。首先是依赖包引入,如下原创 2020-07-10 21:21:46 · 924 阅读 · 0 评论 -
spring-data-redis中JedisCluster不支持pipelined问题解决
简介:引言 了解Jedis的童鞋可能清楚,Jedis中JedisCluster是不支持pipeline操作的,如果使用了redis集群,在spring-boot-starter-data-redis中又正好用到的pipeline,那么会接收到Pipeline is currently not supported for JedisClusterConnection.这样的报错。引言了解Jedis的童鞋可能清楚,Jedis中JedisCluster是不支持pipeline操作的,如果使用了redis.原创 2020-07-10 21:18:55 · 2871 阅读 · 0 评论 -
redis 设置密码登录后,想关闭redis服务器,需要 redis-cli -a 密码 shutdown
redis 设置密码登录后,想关闭redis服务器,需要redis-cli -a 密码 shutdownhttps://blog.youkuaiyun.com/haha_rookie/article/details/79260416原创 2020-07-09 21:50:16 · 4044 阅读 · 0 评论 -
RedisDesktopManager连接不上redis解决方案
RedisDesktopManager连接不上redis解决方案(爬坑)一、注释redis.conf文件中的:bind 127.0.0.1(在一段文字之前打#号为注释)二、设置密码 为了安全一定要设,而且这里如果不绑定ip也不设密码的话,redis是默认保护模式,只能本虚拟机访问,不允许其他ip访问,我就是在这里踩坑的;(使用/+requirepass foobared 快速定位到这地方)三、保存配置文件,重启redis服务如果还未成功的话,那么可能就是你的端口没有开放,或者你的ip是否pin原创 2020-07-09 21:48:04 · 2017 阅读 · 0 评论 -
redis分布式锁SET实现 ,避免出现SETNX死锁
SET键值[期满EX秒| PX毫秒][NX | XX]自1.0.0起可用。时间复杂度:O(1)设置key为保持字符串value。如果key已经保存了一个值,则无论其类型如何都会被覆盖。在成功的SET操作中,丢弃与密钥相关联的任何先前时间。选项从Redis 2.6.12开始SET支持一组修改其行为的选项:EXseconds- 设置指定的过期时间,以秒为单位。 PX毫秒- 设置指定的过期时间,以毫秒为单位。 NX- 仅设置密钥(如果密钥尚不存在)。 XX- 仅设...原创 2020-06-10 23:11:19 · 1449 阅读 · 0 评论 -
Redis之两台主机部署:一台master一台slave
第一步:两个电脑都安装Redis-x64-3.2.100.zip文件如何放在C:\redis中解压第二部(在master):找到本机ip(cmd ipconfig):10.10.2.80,修改redis.windows-service.conf文件:把bind 127.0.0.1改为bind 10.10.2.80,其他不变,另外在C:\redis运行cmd:redis-server --service-install redis.windows-service.conf --service-name..原创 2020-06-09 21:21:36 · 611 阅读 · 1 评论 -
Redis分布式锁解决方案
我们知道分布式锁的特性是排他、避免死锁、高可用。分布式锁的实现可以通过数据库的乐观锁(通过版本号)或者悲观锁(通过for update)、Redis的setnx()命令、Zookeeper(在某个持久节点添加临时有序节点,判断当前节点是否是序列中最小的节点,如果不是则监听比当前节点还要小的节点。如果是,获取锁成功。当被监听的节点释放了锁(也就是被删除),会通知当前节点。然后当前节点再尝试获取锁,如此反复)redis.png本篇文章,主要讲如何用Redis的形式实现分布式锁。后续文章会讲解热点KE原创 2020-06-09 21:00:53 · 528 阅读 · 0 评论 -
Redis设置密码
设置密码有两种方式。1. 命令行设置密码。运行cmd切换到redis根目录,先启动服务端>redis-server.exe另开一个cmd切换到redis根目录,启动客户端>redis-cli.exe -h 127.0.0.1 -p 6379客户端使用config get requirepass命令查看密码>config get requirepass1)"requirepass"2)"" //默认空客户端使用config set req原创 2020-06-01 16:27:20 · 5552 阅读 · 3 评论 -
Centos7安装Redis
1、yum install redis --查看是否有redis yum 源[root@localhost ~]# yum install redis 已加载插件:fastestmirrorbase | 3.6 kB 00:00 docker-ce-edge | 2.9 kB 00:00 docker-ce-stable | 2.9 kB 00:00 extras | 3.4 kB 00:00 updates | 3.4 kB 00:00 extras/7/x86_64/p...原创 2020-05-26 23:06:20 · 385 阅读 · 0 评论 -
Redis 简介
参:http://www.runoob.com/redis/redis-tutorial.htmlRedis 简介Redis 是完全开源免费的,遵守BSD协议,是一个高性能的key-value数据库。 Redis 与其他 key - value 缓存产品有以下三个特点:Redis支持数据的持久化,可以将内存中的数据保存在磁盘中,重启的时候可以再次加载进行使用。 Redis不仅...原创 2018-10-25 14:48:56 · 267 阅读 · 0 评论