![](https://img-blog.csdnimg.cn/20201014180756925.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
redis
那些年的代码
Java工作者
展开
-
redis用法介绍
Jedis常用方法APIhttps://blog.csdn.net/zhangguanghui002/article/details/78770071https://blog.csdn.net/lxlcxlm/article/details/78592263Redis命令用scan代替keys、smembers等命令https://blog.csdn.net/keketrtr/article/details/78626131Java Spring 与 Redis 操作封...原创 2020-07-23 08:57:41 · 197 阅读 · 0 评论 -
windows下设置redis开机自启动
windows: 在windows下安装目录下 打开命令窗口: redis-server.exe--service-install redis.windows.conf --loglevel verbose原创 2020-06-30 16:34:24 · 252 阅读 · 0 评论 -
Redis集群pipeline批量插入
由于项目中需要使用批量插入功能, 所以在网上查找到了Redis 批量插入可以使用pipeline来高效的插入, 示例代码如下:String key = "key";Jedis jedis = new Jedis("xx.xx.xx.xx");Pipeline p = jedis.pipelined();List<String> myData = .... //要插入的数据列表for(String data: myData){ p.hset(key, data);}p.syn原创 2020-06-11 17:39:58 · 701 阅读 · 1 评论 -
实例解读什么是Redis缓存穿透、缓存雪崩和缓存击穿
Redis缓存的使用,极大的提升了应用程序的性能和效率,特别是数据查询方面。但同时,它也带来了一些问题。其中,最要害的问题,就是数据的一致性问题,从严格意义上讲,这个问题无解。如果对数据的一致性要求很高,那么就不能使用缓存。另外的一些典型问题就是,缓存穿透、缓存雪崩和缓存击穿。目前,业界也都有比较流行的解决方案。本篇文章,并不是要更加完美的解决这三个问题,也不是要颠覆业界流行的解决方案。而是,...原创 2020-04-14 09:19:35 · 118 阅读 · 0 评论 -
redis slot 槽点
Redis 集群中内置了 16384 个哈希槽,当需要在 Redis 集群中放置一个 key-value时,redis 先对 key 使用 crc16 算法算出一个结果,然后把结果对 16384 求余数,这样每个 key 都会对应一个编号在 0-16383 之间的哈希槽,redis 会根据节点数量大致均等的将哈希槽映射到不同的节点。Redis 集群没有使用一致性hash...原创 2020-04-13 08:19:30 · 757 阅读 · 0 评论 -
Redis快照原理详解
本文对Redis快照的实现过程进行介绍,了解Redis快照实现过程对Redis管理很有帮助。Redis默认会将快照文件存储在Redis当前进程的工作目录中的dump.rdb文件中,可以通过配置dir和dbfilename两个参数分别指定快照文件的存储路径和文件名。快照的过程如下。(1)Redis使用fork函数复制一份当前进程(父进程)的副本(子进程);(2)父进程继续接收并处理客户端...原创 2020-04-11 08:08:35 · 257 阅读 · 0 评论 -
Redis的快照
博客链接:http://www.cnblogs.com/zhenghongxin/p/8669913.htmlredis 本地持久化到硬盘有两种方式,一是快照(snapshotting),二是只追加文件(append-only file AOF)快照快照,顾名思义可以理解为拍照一样,把整个内存数据映射到硬盘中,保存一份到硬盘,因此恢复数据起来比较快,把数据映射回去即可,不像AOF,一条...原创 2020-04-11 08:00:50 · 185 阅读 · 0 评论 -
触发redis创建快照
1、客户端向redis发送BGSAVE命令,会建立子进程将快照写入存储,同时redis可以正常接收命令。2、客户端向redis发SAVE命令,redis在执行写入存储前不接收命令。3、配置文件设置快照,例如save 60 5000,可配置多个。达到条件时触发BGSAVE命令。4、SHUTDOWN时,会触发SAVE命令。5、slave redis发关SYNC命令后,主启动BGSAVE...原创 2020-04-10 18:40:52 · 211 阅读 · 0 评论 -
overcommit_memory 内核参数
1. overcommit_memory是什么? overcommit_memory是一个内核对内存分配的一种策略。 具体可见/proc/sys/vm/overcommit_memory下的值2. overcommit_memory有什么作用? overcommit_memory取值又三种分别为0, 1, 2 overcommit_me...原创 2020-04-10 18:11:30 · 199 阅读 · 0 评论 -
jedis异常:Could not get a resource from the pool
前几天公司后端系统出现了故障,导致app多个功能无法使用,查看日志,发现日志出现较多的redis.clients.jedis.exceptions.JedisConnectionException: Could not get a resource from the pool的异常信息,显而易见,jedis/redis出现了问题。因为是connection的相关的问题,所以看了一下jedis和连接...原创 2020-04-10 18:10:43 · 518 阅读 · 0 评论 -
redis.clients.jedis.exceptions.JedisConnectionException: Could not get a resourc
使用redis作为缓存工具,很容易出现从redis连接池中得不到连接的问题。而使用redis连接池获取连接的时候,往往是在高并发情形下,出现如题所示的问题。本人一般从如下几个方面排查,经验之谈~1)首先判断redis连接参数是否配置正确?很有可能,之前一直能取,但现在突然出现异常,很有可能是redis的服务器down掉了,或者redis的连接条件被更改;2)网络权限更改:做过项目就很...原创 2020-04-10 08:41:51 · 3793 阅读 · 0 评论 -
【redis】常见JedisConnectionException异常分析
纯属用于笔记,转自:http://blog.csdn.net/fachang/article/details/7984123最近项目开发中用到了Redis, 选择了官网推荐的java client Jedis。Redis常用命令学习:http://redis.io/commandsRedis官方推荐Java客户端Jedis(包含了所有Redis命令的实现):https://gith...原创 2020-04-10 08:34:03 · 913 阅读 · 0 评论 -
如何应对缓存穿透和缓存雪崩问题
分析:这两个问题,说句实在话,一般中小型传统软件企业,很难碰到这个问题。如果有大并发的项目,流量有几百万左右。这两个问题一定要深刻考虑。缓存穿透,即黑客故意去请求缓存中不存在的数据,导致所有的请求都怼到数据库上,从而数据库连接异常。解决方案:(一)利用互斥锁,缓存失效的时候,先去获得锁,得到锁了,再去请求数据库。没得到锁,则休眠一段时间重试(二)采用异步更新策略,...原创 2020-04-05 09:31:42 · 176 阅读 · 0 评论 -
Redis分布式锁的正确实现方式
一、前言 分布式锁一般有3中实现方式: 1、数据库乐观锁; 2、基于Redis的分布式锁; 3、基于zookeeper的分布式锁二、可靠性 为了确保分布式锁的可用,我们至少要确保锁的实现满足以下4个条件 1、互斥性。在任意时刻,只有一个客户端持有锁; 2、不会发生死锁...原创 2020-04-04 07:36:11 · 120 阅读 · 0 评论 -
Redis内存淘汰策略,看这一篇就够了!
Redis作为当前最常用的开源内存数据库,性能十分高,据官方数据表示Redis读的速度是110000次/s,写的速度是81000次/s 。而且Redis支持数据持久化,众多数据结构存储,master-slave模式数据备份等多种功能。但是长期将Redis作为缓存使用,难免会遇到内存空间存储瓶颈,当Redis内存超出物理内存限制时,内存数据就会与磁盘产生频繁交换,使Redis性能急剧下降。此时如...原创 2020-04-02 08:07:47 · 144 阅读 · 0 评论 -
* Redis —— Scan、SScan、HScan、ZScan
一、数据库基本命令1. 扫描所有数据表scan 02. 扫描hash表Real_Gps中的两条记录HSCAN Real_Gps 0 MATCH * COUNT 2二、RedisTemplate操作scan//1. 一次性获取Real_Gps中数据 Map<Object, Object> map1 = redisTemplate...原创 2020-03-16 12:48:02 · 956 阅读 · 0 评论 -
redis整合spring(redisTemplate工具类)
import java.util.List;import java.util.Map;import java.util.Set;import java.util.concurrent.TimeUnit;import org.springframework.data.redis.core.RedisTemplate;import org.springframework.util.C...原创 2020-03-15 11:54:31 · 165 阅读 · 0 评论 -
Redis命令:scan实现模糊查询
1.scan前言从Redis v2.8开始,SCAN命令已经可用,它允许使用游标从keyspace中检索键。对比KEYS命令,虽然SCAN无法一次性返回所有匹配结果,但是却规避了阻塞系统这个高风险,从而也让一些操作可以放在主节点上执行。2.SCAN相关命令SCAN相关命令包括SSCAN 命令、HSCAN 命令和 ZSCAN 命令,分别用于集合、哈希键及有续集等SCAN 命令用于迭代当前...原创 2020-03-15 11:10:33 · 406 阅读 · 1 评论 -
Jedis scan及其count的值
参考这个地址https://blog.csdn.net/zy_281870667/article/details/79310554原创 2020-03-15 10:59:19 · 321 阅读 · 0 评论 -
redis中KEYS、SMEMBERS、SCAN 、SSCAN 的区别
今天在看项目中大神写的框架中关于redis存储相关代码时,发现了再获取set数据类型的全部元素时,采用的是sscan函数,而不是采用的smembers函数,这两个到底有什么区别呢?先看这两个命令:keys:用于获取当前数据库的模式匹配的所有keysmembers:获取set集合中的所有元素而scan又包含多个类似命令SCAN增量迭代当前数据库中的数据库键。S...原创 2020-03-15 10:50:15 · 792 阅读 · 1 评论 -
spring-redis SortedSet类型成员的过期时间处理
redis默认是只支持简单key的过期处理的,像SortedSet类型,也是针对整个set的过期处理,不支持对set的某个成员的过期处理;为了解决这个问题,做法如下:1.存储key及值信息到redis,并将key存入set里,设置key的过期时间;这样key可以支持过期处理并在过期后移除key及值;但是set里的key还是存在的;a、在需要判断key过期的处理中,如 boolean...原创 2019-12-23 10:50:28 · 949 阅读 · 0 评论 -
随机获取一个集合(List, Set)中的元素,随机获取一个Map中的key或value
利用Java提供的Random类。从List或Set中随机取出一个元素,从Map中随机获取一个key或value。因为Set没有提供get(int index)方法,仅仅能先获取一个随机数后。利用一个计数器,对Set进行循环,当计数器等于随机数时返回当前元素,对于Map的处理也类似。不知有没有更好的方法……package com.xjj.util;import java.u...原创 2019-12-23 10:50:51 · 1055 阅读 · 0 评论 -
Redis Zrevrank 命令
Redis Zrevrank 命令返回有序集中成员的排名。其中有序集成员按分数值递减(从大到小)排序。排名以 0 为底,也就是说, 分数值最大的成员排名为 0 。使用 ZRANK 命令可以获得成员按分数值递增(从小到大)排列的排名。语法redis Zrevrank 命令基本语法如下:redis 127.0.0.1:6379> ZREVRANK key member可...原创 2019-12-23 10:51:11 · 151 阅读 · 0 评论 -
Redis有效时间设置及时间过期处理
本文对redis的过期处理机制做个简单的概述,让大家有个基本的认识。Redis中有个设置时间过期的功能,即对存储在redis数据库中的值可以设置一个过期时间。作为一个缓存数据库,这是非常实用的。如我们一般项目中的token或者一些登录信息,尤其是短信验证码都是有时间限制的,按照传统的数据库处理方式,一般都是自己判断过期,这样无疑会严重影响项目性能。一、有效时间设置:redis对存储值的过...原创 2019-12-24 11:32:09 · 686 阅读 · 0 评论 -
redis 键值对 有效期设置
redis 键值对 有效期设置redis中可以使用expire命令设置一个键的生存时间,到时间后redis会自动删除它<-----> 类比于javaweb系统临时数据 过期删除功能expire设置失效时间(单位/秒)persist取消失效时间ttl/pttl(单位为 秒/毫秒)查看键的剩余时间返回三种值 -2(健已经不存在了) -1(表示永久有效)...原创 2019-12-24 11:32:15 · 1206 阅读 · 2 评论 -
SCAN----Redis检索键值对
转载地址:http://redis.readthedocs.org/en/latest/key/scan.htmlSCANSCAN cursor [MATCH pattern] [COUNT count]SCAN命令及其相关的SSCAN命令、HSCAN命令和ZSCAN命令都用于增量地迭代(incrementally iterate)一集元素(a collection of...原创 2019-12-24 11:32:23 · 173 阅读 · 0 评论 -
java连接redis中的数据查、增、改、删操作的方法
package com.lml.redis;import java.util.HashMap;import java.util.Iterator;import java.util.Map;import java.util.Map.Entry;import java.util.Set;import redis.clients.jedis.Jedis;public class...原创 2019-12-24 11:32:43 · 202 阅读 · 0 评论 -
Redis 有序集合(sorted set)
Redis 有序集合和集合一样也是string类型元素的集合,且不允许重复的成员。不同的是每个元素都会关联一个double类型的分数。redis正是通过分数来为集合中的成员进行从小到大的排序。有序集合的成员是唯一的,但分数(score)却可以重复。集合是通过哈希表实现的,所以添加,删除,查找的复杂度都是O(1)。 集合中最大的成员数为 232 - 1(4294967295, 每个集合...原创 2019-12-22 17:49:49 · 70 阅读 · 0 评论 -
Redis sorted set实现集合设置member过期
在我们日常工作中,有许多这种逻辑例如需要得到最近三分钟的cache list. 例如我们监控系统需要查询最近一分钟的数据。总结说来就是 需要一个list存储对象,并且这个对象会无限制增长,需要设置过期.普遍做法有两种:1.一种就是简单的list,存储的对象带有expireTime,然后定时任务不停的拿到整个list并去除过期的member.2.一种是把整个list的每个成员都当...原创 2019-11-22 17:18:51 · 1722 阅读 · 0 评论 -
Redis sortedset实现元素自动过期
这里的自动过期,Redis并没有提供相应的api,但是可以使用一下方法来实现。需求背景:给用户返回的文章要求七日内不能重复;文章是存放在java list里边;(这一块就是从db将文章拿出来,然后放入list,放入java内存中)。分析:一开始我的做法是这样:当用户第一次访问的时候,创建一个key值为userId的缓存,value为title列表(文章标题,文章唯...原创 2019-11-22 14:33:45 · 603 阅读 · 0 评论 -
Redis集群模式之分布式集群模式
前言Redis集群模式主要有2种:主从集群 分布式集群。前者主要是为了高可用或是读写分离,后者为了更好的存储数据,负载均衡。本文主要讲解主从集群。本章主要讲解后一半部分,Redis集群。与本文相关的代码与配置文件都已经上传至github上:地址:https://github.com/SeanYanxml/bigdata原理Redis为了实现负载均衡,提供集群模式。...原创 2019-10-25 14:21:10 · 132 阅读 · 0 评论 -
Redis集群都有哪些模式
前言:一,为什么要使用redis1,解决应用服务器的cpu和内存压力2,减少io的读操作,减轻io的压力3,关系型数据库扩展性不强,难以改变表的结构二,优点1,nosql数据库没有关联关系,数据结构简单,扩展容易2,数据读写快,能够每秒胜任几十万的并发,处理速度快三,使用场景1,数据高并发读写2,海量数据读写3,对不规则数据也就是扩展性要求高的数据四...原创 2019-10-25 11:55:33 · 560 阅读 · 1 评论 -
Redis 的几种常见使用方式
常见使用方式Redis 的几种常见使用方式包括: Redis 单副本 Redis 多副本(主从) Redis Sentinel(哨兵) Redis Cluster Redis 自研 各种使用方式的优缺点Redis 单副本Redis 单副本,采用单个 Redis 节点部署架构,没有备用节点实...原创 2019-10-25 11:50:52 · 329 阅读 · 0 评论 -
redis三种模式对比
模式类型主从模式(redis2.8版本之前的模式)、哨兵sentinel模式(redis2.8及之后的模式)、redis cluster模式(redis3.0版本之后)主从模式原理同Mysql主从复制的原因一样,Redis虽然读取写入的速度都特别快,但是也会产生读压力特别大的情况。为了分担读压力,Redis支持主从复制,Redis的主从结构可以采用一主多从或者级联结构,Redis主从复制可...原创 2019-10-24 15:46:49 · 219 阅读 · 0 评论 -
Redis cluster集群模式的原理
redis cluster redis cluster是Redis的分布式解决方案,在3.0版本推出后有效地解决了redis分布式方面的需求 自动将数据进行分片,每个master上放一部分数据 提供内置的高可用支持,部分master不可用时,还是可以继续工作的 支撑N个redis master node,每个master node都可以挂载多个slave node...原创 2019-10-23 16:13:29 · 246 阅读 · 0 评论 -
Spring boot配置多个Redis数据源操作实例
Spring boot配置多个Redis数据源操作实例在SpringBoot是项目中整合了两个Redis的操作实例,可以增加多个;一般在一个微服务生态群中是不会出现多个Redis中间件的,所以这种场景很少见,但也不可避免,但是不建议使用,个人建议,勿喷。基于Maven3.0搭建,spring1.5.9.RELEASE和JDK1.81、新建SpringBoot项目,添加依赖 ...原创 2019-09-19 10:16:53 · 1429 阅读 · 0 评论 -
springboot(8)-多数据源-同一个redis地址的两个database
感谢大佬的参考文档:http://blog.51cto.com/13954634/2170900https://blog.csdn.net/lc199408/article/details/77154375总结:需要连接几个redis数据源,都可以只创建1个JedisConnectionFactory,其中JedisConnectionFactory使用 setdatabase、se...原创 2019-09-19 10:16:46 · 3521 阅读 · 1 评论 -
linux查看服务安装目录
例如查看 reids安装目录 如果命令 which 和whereis 都找不到安装目录,可使用以下办法 ps -ef|grep redis得到了进程号 xxxx然后 ls -l /proc/xxxx/cwd原创 2019-09-18 11:23:19 · 611 阅读 · 0 评论 -
java获得redis所有的key-value
运行结果:redis配置文件需要序列化: @Bean public RedisTemplate<Object, Object> redisTemplate(RedisConnectionFactory redisConnectionFactory) { RedisTemplate<Object, Object> redisT...原创 2019-09-08 07:48:11 · 18424 阅读 · 4 评论 -
Redis命令:scan实现模糊查询
1.scan前言从Redis v2.8开始,SCAN命令已经可用,它允许使用游标从keyspace中检索键。对比KEYS命令,虽然SCAN无法一次性返回所有匹配结果,但是却规避了阻塞系统这个高风险,从而也让一些操作可以放在主节点上执行。2.SCAN相关命令SCAN相关命令包括SSCAN 命令、HSCAN 命令和 ZSCAN 命令,分别用于集合、哈希键及有续集等SCAN 命令用...原创 2019-09-08 07:47:50 · 3847 阅读 · 0 评论