Redis手札
文章平均质量分 95
Redis + JavaAPI + Spring
小小工匠
show me the code ,change the world
展开
-
Redis-22Redis-集群管理
文章目录概述redis-trib.rb使用帮助创建集群(create)功能参数示例注意事项增加节点(add-node)功能参数示例删除节点(del-node)功能参数示例分片迁移(reshard)功能参数示例数据导入(import)功能参数示例分片检查(check)功能参数示例分片修复(fix)功能参数示例修改节点超时时长(set-timeout)功能参数示例调用节点命令(call)功能参数示例集...原创 2018-10-20 23:09:46 · 11106 阅读 · 0 评论 -
Spring Cache-缓存注解(二)
文章目录导读概述注解@Cacheable 和@CachePut导读Spring-Cache手札Spring Cache抽象-缓存注解实战-Redis-20Spring缓存机制整合Redis关于Spring Cache以及注解,之前总结了几篇。现在我们再来细化下概述注解描述@Cacheable表明在进入方法之前, Spring 会先去缓存服务器中查找对应 key...原创 2018-10-08 00:57:47 · 12005 阅读 · 0 评论 -
高并发-【抢红包案例】之一:SSM环境搭建及复现红包超发问题
文章目录概述抢红包案例案例关注点库表设计概述电商的秒杀、抢购,春运抢票,微信QQ抢红包,从技术的角度来说,这对于Web 系统是一个很大的考验. 高并发场景下,系统的优化和稳定是至关重要的.互联网的开发包括 Java 后台、 NoSQL、数据库、限流、CDN、负载均衡等内容, 目前并没有权威性的技术和设计,有的只是长期经验的总结,但是使用这些经验可以有效优化系统,提高系统的并发能力.我们接...原创 2018-10-09 00:39:02 · 36291 阅读 · 35 评论 -
高并发-【抢红包案例】之二:使用悲观锁方式修复红包超发的bug
文章目录概述超发问题分析使用数据库锁的解决方案使用悲观锁(排它锁 for update)使用乐观锁(依靠表的设计和代码)总结悲观锁(抽象的描述,不真实存在这个锁)共享锁(S锁)排他锁(X锁)代码改造分析RedPacketDao新增接口方法RedPacket.xml配置映射文件Service层调用新的Dao方法还原数据,部署测试统计报告注意事项代码概述高并发–【抢红包案例分析和代码实现以及各种...原创 2018-10-09 14:44:31 · 12602 阅读 · 5 评论 -
高并发-【抢红包案例】之三:使用乐观锁方式修复红包超发的bug
文章目录导读乐观锁CAS 原理ABA问题导读高并发-【抢红包案例】之一:SSM环境搭建及复现红包超发问题高并发-【抢红包案例】之二:使用悲观锁方式修复红包超发的bug接下来我们使用乐观锁的方式来修复红包超发的bug乐观锁乐观锁是一种不会阻塞其他线程并发的机制,它不会使用数据库的锁进行实现,它的设计里面由于不阻塞其他线程,所以并不会引发线程频繁挂起和恢复,这样便能够提高并发能力,也称...原创 2018-10-09 22:43:23 · 13177 阅读 · 5 评论 -
高并发-【抢红包案例】之四:使用Redis+Lua脚本实现抢红包并异步持久化到数据库
文章目录导读概述导读高并发-【抢红包案例】之一:SSM环境搭建及复现红包超发问题高并发-【抢红包案例】之二:使用悲观锁方式修复红包超发的bug高并发-【抢红包案例】之三:使用乐观锁方式修复红包超发的bug概述上面三篇博文是使用的MySql数据库来作为数据的载体数据最终会将数据保存到磁盘中,而Redis使用的是内存,内存的速度比磁盘速度肯定要快很多.对于使用 Redis实现抢红包,...原创 2018-10-10 21:50:41 · 13857 阅读 · 3 评论 -
Redis-21Redis集群模式-Centos6.5上3台主机3主3从的配置及通过代码访问集群
文章目录概述概述前面几篇博文介绍了 Redis主从 、 Redis哨兵模式 , 现在我们来了解下更加牛逼的Redis集群模式。集群的主要目的是解决可扩展性。在Redis3.0之前(3.0版本开始支持集群功能)主要是通过客户端分片、代理协助分片(Twemproxy)、查询路由、预分片、一致性哈希、客户端代理/转发等方式来支持。Redis集群通过Hash槽、查询路由、节点互联的混合模式、保证...原创 2018-10-14 22:38:26 · 11855 阅读 · 0 评论 -
Redis-19Redis哨兵Sentinel模式-Centos6.5上3台主机1主2从3哨兵的配置及通过代码访问哨兵
文章目录概述环境Sentinel环境搭建概述Redis主从模式当主服务器右机后,需要手动把一台从服务器切换为主从服务器,这就需要人工干预,既费时费力,会造成一段时间内服务不可用,不推荐使用。 可以使用哨兵模式或者集群模式。 这里我们来探讨哨兵模式。Redis 可以存在多台服务器,并且实现了主从复制的功能。哨兵模式是一种特殊的模式,首先 Redis 提供了哨兵的命令,哨兵是一个独立 的进程,...原创 2018-09-29 17:24:07 · 12055 阅读 · 0 评论 -
Redis-20Spring缓存机制整合Redis
文章目录Redis 和数据库读Redis和数据库写Redis 和数据库读数据缓存往往会在 Redis 上设置超时时间,当设置 Redis 的数据超时后, Redis 就没法读出数据了 , 这个时候就会触发程序读取数据库 , 然后将读取的数据库数据写入 Redis (此时会给 Redis 重设超时时间 ),这样程序在读取的过程中就能按一定的时间间隔刷新数据了。Redis和数据库写...原创 2018-10-07 21:51:58 · 10742 阅读 · 0 评论 -
Redis-01Redis概述
思维导图Redis在Java互联网项目中的作用安装 Redis思维导图Redis在Java互联网项目中的作用在传统的 Java Web 项目中,使用数据库进行存储数据,弊端主要来自于性能方面。 由于数据库持久化数据主要是面向磁盘,而磁盘的读/写比较慢,如果不存在高并发,因此往往没有瞬间需要读/写大量数据的要求,这 个时候使用数据库进行读/写是没有太大的问...原创 2018-08-21 21:02:20 · 11093 阅读 · 0 评论 -
Redis-03Redis数据结构--全局命令及字符串string
在了解具体的数据结构类型之前,我们有必要了解下Redis提供的操作key的全局命令、 数据结构和内部编码、 单线程命令处理机制,都有助于加深对Redis的理解。原创 2018-09-20 00:21:31 · 11279 阅读 · 1 评论 -
Redis-02Redis在linux下的安装及常见问题
文章目录新建redis用户安装Redismake 错误一 未安装gccmake 错误二 jemalloc整理文件启动redis以默认的方式启动redis指定redis.conf启动redis后台方式启动redis新建redis用户使用root用户登录虚机,添加用户并设置密码#添加用户 [也可以通过-u -g -d参数指定特定的值来创建用户[root@artisan ~]# use...原创 2018-09-19 13:18:43 · 12079 阅读 · 0 评论 -
Redis-04Redis数据结构--哈希hash
文章目录哈希概述客户端操作hashRedis hash 结构命令哈希概述Redis 中哈希结构就如同 Java 的 map 一样 , 一个对象里面有许多键值对,它是特别适合存储对象的.如果内存足够大 ,那么一个 Redis 的 hash 结构可以存储2的32次方-1个键值对 ( 40多亿)。在 Redis 中, hash 是一个 String 类型的 field 和 value 的映射表,...原创 2018-09-20 17:59:52 · 11033 阅读 · 0 评论 -
Redis-05Redis数据结构--链表( linked-list)
文章目录概述Redis 关于链表的命令概述链表结构是 Redis 中一个常用的结构,它可以存储多个字符串它是有序的能够存储2的32次方减一个节点(超过 40 亿个节点)Redis 链表是双向的,因此即可以从左到右,也可以从右到左遍历它存储的节点链表结构查找性能不佳,但 插入和删除速度很快由于是双向链表,所以只能够从左到右,或者从右到左地访问和操作链表里面的数据节点。 但是使用链表...原创 2018-09-20 22:18:14 · 12253 阅读 · 0 评论 -
Redis-06Redis数据结构--集合Set
文章目录概述概述Redis 的集合不是一个线性结构,而是一个哈希表结构,它的内部会根据 hash 分子来存储和查找数据,理论上一个集合可以存储2的32次方减一(约42亿)个元素。因为采用哈希表结构,所以对于 Redis 集合的插入、删除和查找的复杂度都是 0(1),只是我们需要注意 3 点对于集合而言,它的每一个元素都是不能重复的,当插入相同记录的时候都会失败集合是无序的集合的每一个...原创 2018-09-26 13:17:54 · 10912 阅读 · 0 评论 -
Redis-07Redis数据结构--有序集合ZSet
文章目录概述Redis 有序集合的部分命令概述有序集合和无序集合的命令是接近的,只是在这些命令的基础上,会增加对于排序的操作,这一点在使用的时候需要注。有些时候 Redis 借助数据区间的表示方法来表示包含或者不包含,比如在数学的区间表示中[2,5 ]表示包含 2,但是不包含 5 的 区间。Redis 有序集合的部分命令官网: https://redis.io/commands#sor...原创 2018-09-26 16:49:16 · 11971 阅读 · 0 评论 -
Redis-08Redis数据结构--基数HyperLogLog
文章目录概述Redis 的 Hyperloglog 命令Spring 中操作基数注意代码概述基数是一种算法。举个例子 , 一本英文著作由数百万个单词组成,你的内存却不足以存储它们,那么我们先分析一下业务。英文单词本身是有限的,在这本书的几百万个单词中有许许多多重复单词 ,扣去重复的单词,这本书中也就是几千到一万多个单词而己,那么内存就足够存储它们 了。比如数字集合{1,2,5,7,9, 1,...原创 2018-09-27 00:13:14 · 10714 阅读 · 0 评论 -
Redis-09Redis的基础事务
文章目录概述Redis 事务命令概述和其他大部分的 NoSQL 不同,Redis 是存在事务的,尽管它没有数据库那么强大,但是它还是很有用的,尤其是在那些需要高并发的网站当中 ,使用 Redis 读/写数据要比数据库快得多,如果使用 Redis 事务在某种场合下去替代数据库事务,则可以在保证数据一致性的同时,大幅度提高数据读/写 的响应速度。互联网系统很多用户同时访问服务器的可能性很大,尤其...原创 2018-09-27 10:53:39 · 11049 阅读 · 1 评论 -
Redis-10Redis的事务回滚
文章目录概述场景一: 命令格正确,数据类型错误场景二:命令格式错误概述对于 Redis 而言,不单单需要注意其事务处理的过程,其回滚的能力也和数据库不太一样,这也是需要特别注意的一个问题一Redis 事务遇到的命令格式正确而数据类型不符合 ,如下所示。场景一: 命令格正确,数据类型错误127.0.0.1:6379> FLUSHDBOK127.0.0.1:6379> MULT...原创 2018-09-27 14:24:06 · 18377 阅读 · 4 评论 -
Redis-11使用 watch 命令监控事务
文章目录概述Redis watch流程ABA问题使用watch成功提交的事务的案例使用watch回滚的事务的案例概述在 Redis 中使用 watch 命令可以决定事务是执行还是回滚。一般而言,可以在 multi 命令之前使用 watch 命令监控某些键值对,然后使用 multi 命令开启事务,执行各类对数据结构进行操作的命令,这个时候这些命令就会进入队列。当 Redis 使用 exec ...原创 2018-09-27 16:08:49 · 12295 阅读 · 1 评论 -
Redis-12Redis 流水线( pipeline )
文章目录概述JavaAPI 操作Redis PipelineSpring操作Redis Pipeline代码概述Redis 的事务的各类问题,在事务中 Redis 提供了队列, 这是一个可以批量执行任务的队列,这样性能就比较高,但是使用 multi…exec 事务命令是有系统开销的,因为它会检测对应的锁和序列化命令。有时候我们希望在没有任何附加条件的场景下去使用队列批量执行一系列的命令,从而...原创 2018-09-27 19:56:19 · 11291 阅读 · 2 评论 -
Redis-13Redis发布订阅
文章目录概述客户端操作概述当使用银行卡消费的时候,银行往往会通过微信、短信或邮件通知用户这笔交易的信息,这便是一种发布订阅模式, 1这里的发布是交易信息的发布,订阅则是各个渠道。这在实际工作中十分常用, Redis 支持这样的一个模式。Redis 发布订阅(pub/sub)是一种消息通信模式:发送者(pub)发送消息,订阅者(sub)接收消息。观察者模式就是这个模式的典型应用。Redis...原创 2018-09-27 22:17:37 · 10707 阅读 · 0 评论 -
Redis-14Redis超时命令
文章目录概述概述正如 Java 虚拟机,它提供 GC的功能,来保证 Java 程序使用过且不再使用的 Java 对象及时的从内存中释放掉,从而保证内存空间可用。当程序编写不当或考虑欠缺的时候(比如读入大文件),内存就可能存储不下运行所需要的数据,那么 Java虚拟机就会抛出内存溢出的异常而导致服务失败。同样, Redis 也是基于内存而运行的数据集合,也存在着对内存垃圾的回收和管理的问题。R...原创 2018-09-28 12:03:20 · 12176 阅读 · 5 评论 -
Redis-15Redis基础配置文件
文章目录概述Redis CONFIG 命令Redis redis.conf文件概述Redis 的配置文件放置在其安装目录下,如果是 Windows 系统,则默认的配置文件就是 redis .window.conf 如果是 Linux 系统,则是 redis.conf。在大部分的情况下我们都使用到Linux 环境,这里我们以linux环境为例。Redis CONFIG 命令可以通过 C...原创 2018-09-28 16:07:31 · 10838 阅读 · 0 评论 -
Redis-16Redis备份(持久化)
文章目录概述概述在 Redis 中存在两种方式的备份 :RDB 快照(snapshotting), 它是备份当前瞬间 Redis在内存中的数据记录。Redis的默认方式。采用RDB持久化时服务器只会保存一个RDB文件,方便维护。AOF 只追加文件( Append-Only File , AOF ) , 其作用就是当 Redis执行写命令后,在一定的条件下将执行过的写命令依次保存...原创 2018-09-28 20:49:44 · 10812 阅读 · 0 评论 -
Redis-17Redis内存回收策略
文章目录概述maxmemory-policy 参数概述Redi s 也会因为内存不足而产生错误 , 也可能因为回收过久而导致系统长期的停顿,因此掌握执行回收策略十分有必要。在 Redis 的配置文件中,当 Redis 的内存达到规定的最大值时,允许配置 6 种策略中的一种进行淘汰键值,并且将一些键值对进行回收。maxmemory-policy 参数# Set a memory usage...原创 2018-09-28 23:21:12 · 12711 阅读 · 0 评论