
Redis
Be_insighted
强者自救,圣者渡人!
展开
-
批量生产redis测试数据&SQL语句修改varchar类型的字段为json报错(Oracle、MySQL修改字段类型时,该列有数据无法完成操作)
批量生产redis测试数据原创 2022-11-24 08:44:22 · 563 阅读 · 0 评论 -
Redis在项目中的使用(缓存、分布式锁)
统一Key前缀(按业务)public class RedisKey { /** * 取餐柜 */ public static final String CABINET_SERVICE = "cabinet_service"; /** * 店铺名称 */ public static final String STORE_NAME = "merchant:store:"; /** * 商家名称 ...原创 2022-05-27 23:15:16 · 444 阅读 · 0 评论 -
SpringBoot服务获取Redis信息
利用ReatTemplate及方法获取Redis服务相关信息@RestControllerpublic class RedisCacheController { @Autowired private RedisTemplate<String, String> redisTemplate; @GetMapping("/monitor/cache") public Ret getInfo() throws Exception { Pro原创 2022-05-09 12:44:28 · 2147 阅读 · 2 评论 -
MySQL与缓存双写一致性
如果仅仅查询的话,缓存的数据和数据库的数据是没问题的。但是,当我们要更新时候查询呢?各种情况很可能就造成数据库和缓存不一致了。从理论上说,只要我们设置了键的过期时间,我们就能保证缓存和数据库的数据最终是一致的。因为只要缓存数据过期了,就会被删除。随后读的时候,因为缓存里没有,就可以查数据库的数据,然后将数据库查出来的数据写入到缓存中。除了设置过期时间,我们还需要做更多的措施来尽量避免数据库与缓存处于不一致的情况发生。对于更新操作一般来说,执行更新操作时,我们会有两种选...原创 2022-04-29 16:34:40 · 442 阅读 · 0 评论 -
MISCONF Redis is configured to save RDB snapshots
Internal Server ErrorMISCONF Redis is configured to save RDB snapshots, but it is currently not able to persist on disk. Commands that may modify the data set are disabled, because this instance is configured to report errors during writes if RDB snapsho原创 2022-01-30 10:27:04 · 899 阅读 · 0 评论 -
主从架构(读写分离)潜在风险
主从架构、读写分离示意图1、读到过期数据Redis性能高主要得益于纯内存操作,但内存存储介质的成本过高,所以数据的存储有一定的约束。通常会设置过期时间,对于一些使用不是很频繁的数据,会定期删除,提高资源的利用率。删除过期数据1、惰性删除。即被动删除,当数据过期后,并不会马上删除。而是等到有请求访问时,对数据检查,如果数据过期,则删除数据。优点:不需要单独启动额外的扫描线程,减少了CPU资源的损耗。缺点:大量的过期数据滞留内存中,需要主动触发、检查、删除,否则会一直.原创 2021-11-19 19:48:33 · 846 阅读 · 0 评论 -
Redis从入门(安装、数据类型、基本操作)到高级(高可用)图文并茂加实操——李子捌
1、入门1.1 安装1.1.1 创建安装目录为了方便管理我们一般统一软件的安装目录,这里选择安装的目录是 ->/usr/local/soft1.1.2 下载Redis我们通过wget命令从redis官网下载压缩包 ->Redis当前最新版本下载地址 ->https://download.redis.io/releases/redis-6.2.4.tar.gzcd/usr/local/soft wgethttps://download.red...转载 2021-10-17 20:20:16 · 571 阅读 · 0 评论 -
基于Redission实现的DistributedLock
基于Redission的分布式注解@Target(ElementType.METHOD)@Retention(RetentionPolicy.RUNTIME)public @interface RedisLock{ /** * 支持@RedisLock(product:${name}:${id}:value)这种方式定义lockKey * @return */ String lockKey() default ""; /** * 获原创 2021-08-05 22:38:59 · 586 阅读 · 0 评论 -
Redis 高可用之主从复制
主从复制使用一台机器模拟Redis的主从复制概念一般来说,要将Redis运用于工程项目中,只使用一台Redis是万万不能的,原因如下: 从结构上,单个Redis服务器会发生单点故障,并且一台服务器需要处理所有的请求负载,压力较大; 从容量上,单个Redis服务器内存容量有限,就算一台Redis服务器内容容量为256G,也不能将所有内容用作Redis存储内存,一般来说,单台Redis最大使用内存不应该超过20G。 场景:电子商务网站上的商品,一般都是一次上传,无数次浏原创 2020-10-28 15:47:34 · 194 阅读 · 2 评论 -
Redis 主从架构的一些知识点、持久化与异常恢复
以下是关于Redis复制功能的几个重要方面:ØRedis使用异步复制。从Redis 2.8开始,从服务器以每秒一次的频率向主服务器报告复制流(replication stream)的处理进度;Ø复制功能不会阻塞主服务器:即使有一个或者多个从服务器正在进行初次同步,主服务器也可以继续处理命令请求;Ø复制功能也不会阻塞从服务器:只要在redis.conf文件中进行相应的设置,即使从服务器正在进行初次同步,它一样可以使用未同步完成之前的数据集来处理命令查询;Ø从服务器在同步过程中,删...原创 2020-10-28 10:01:56 · 284 阅读 · 1 评论 -
Redis 热Key问题及解决方案
什么是热key热key问题就是,突然有大量的请求去访问redis上的某个特定key,造成流量过大,达到物理网上限,导致redis服务器宕机引发雪崩。解决方案 提前把热key打散到不同的服务器,降低压力 加入二级缓存,提前加载热key数据到内存中,如果redis宕机,走内存查询 ...原创 2020-10-27 17:18:45 · 709 阅读 · 0 评论 -
深入剖析Redis持久化,RDB还是AOF!?
RDB(Redis Persistence Demystified)RDB指的是 ——>在指定的时间间隔内(规则)将内存中的数据集快照写入磁盘,也就是行话讲的Snapshot快照,它恢复时是将快照文件直接读到内存里。持久化过程:Redis会单独创建(fork)一个子进程来进行持久化,会先将数据写入到一个临时文件中,待持久化过程都结束了,再用这个临时文件替换上次持久化好的文件。整个过程中,主进程是不进行任何IO操作的,这就确保了极高的性能如果需要进行大规模数据的恢复,且对于数据恢复的完整.原创 2020-09-25 17:34:00 · 259 阅读 · 0 评论 -
已解Caused by: redis.clients.jedis.exceptions.JedisConnectionException: Could not get a resource from
已解决Caused by: redis.clients.jedis.exceptions.JedisConnectionException: Could not get a resource from the pool!原因描述:项目配置中: redis: host: dev-redis port: 6379 database: 1 timeout: 10000实际项目中并有使用redis、去掉配置发现依然报错!因为启动的时候直接用了maven打包时原创 2020-08-29 18:37:02 · 6589 阅读 · 0 评论 -
Redis (缓存)主流应用架构 & Redis实现分布式锁
Redis (缓存)主流应用架构Redis为什么能这么快?阻塞IO模型IO多路复用模型Redis的一些底层数据结构实现分布式锁方法二、解决1可能持有锁成功,然后设过期时间出现问题的情况!...原创 2020-09-10 16:13:15 · 174 阅读 · 0 评论 -
Redis中如何从海量Key里查询出某一固定前缀的Key?
批量生成redis测试数据1.Linux Bash下面执行for((i=1;i<=20000000;i++)); do echo "set k$i v$i" >>/tmp/redisTest生成2千万条redis批量设置kv的语句(key=kn, value=vn)写入到/tmp目录下的redisT&2.用vim去掉行尾的M符号,使用方式如下::vim /tmp/redisTest.txt:set fileformat=dos#设置文件的格式,通过这句话去掉每行结尾的^原创 2020-09-10 14:17:13 · 736 阅读 · 1 评论 -
用 EntityManager 做复杂统计、分页、排序、查询、筛选MySQL转自定义对象(其中某些字段数据库中没有)及优化方案,附实验结果
@Service@Slf4jpublic class statisticService { @Autowired private EntityManager entityManager; public Page<RecordMerchantVO> queryMerchantRecord(QueryRecordReq req) { long start = System.currentTimeMillis(); String sor...原创 2020-07-10 17:54:15 · 2523 阅读 · 0 评论 -
Redis为什么这么快之⑤大合理原因
1、纯内存操作:无需进行磁盘IO2、单线程,无锁竞争(无线程切换,上下文处理)3、多路IO复用,非阻塞IO4、高效的数据结构(如:HyperLogLog,密集型存储结构)Redis的瓶颈是内存大小、网络带宽,cpu不是!为何引入多线程? 大键值的删除 多线程阻塞地释放内存,减少对Redis主线程(工作线程)的阻塞时间,提升性能 它是基于内存操作的,更好的维护性,也能并发处理用户请求(并发处理用户的连接,同时监听多个文件描述符的读、写状态)...原创 2020-08-21 14:42:58 · 262 阅读 · 0 评论 -
一文带你了解redis安装和配置
redis安装和配置1.安装 下载安装包 官网下载 建议上传到我们的home下:/home/redis 解压 tar -xvf redis-4.0.9.tar.gz 编译安装 mv redis-4.0.9 redis cd redis make && make install2.配置修改安装目录下的redis.conf文件...原创 2020-04-27 15:04:16 · 260 阅读 · 0 评论 -
浅析缓存穿透、击穿、雪崩及解决方案 & 布隆过滤器&Redis 集群
缓存穿透、击穿、雪崩穿透记录——大量查询,缓存中没有记录且数据库中也没有记录,请求绕过缓存,打到DB上,MySQL并发连接1k左右,将会冲垮DB...原因:缓存服务器故障、用户恶意请求解决方案: 增加校验,拦截非法请求 缓存 key <——> null 减少大量空对象的缓存,有效时间设短些、防同一用户暴力攻击 布隆过滤、提前拦截 建立数据标识仓库:数据映射Hash值,然后将Hash值存到Redis中!可能出现部分数据Hash相同、而需要落到DB原创 2020-08-21 14:32:19 · 424 阅读 · 0 评论