![](https://img-blog.csdnimg.cn/20200126102639452.jpg?x-oss-process=image/resize,m_fixed,h_224,w_224)
Redis
Redis相关
九月清晨柳成荫
磨砺修仙,法力无边。
展开
-
接口调用幂等性问题及解决方案
什么是接口调用幂等性问题?现如今我们的系统大多拆分为分布式架构、微服务架构,一套系统中包含了多个子系统服务,而一个子系统服务往往会去调用另一个服务,而服务调用服务无非就是使用RPC通信或者RESTFUL,既然是通信,那么就有可能在服务器处理完毕后返回结果的时候挂掉,这个时候用户端发现很久没有反应,那么就会多次点击按钮,这样请求有多次,那么处理数据的结果是否要统一呢?那是肯定的!接口幂等性就是用户对于同一操作发起的一次请求或者多次请求的结果是一致的, 不会因为多次点击而产生了副作用:比如说支付场景,用户购原创 2020-07-02 22:13:27 · 2473 阅读 · 0 评论 -
Redis - 实现分布式锁的阶段演进
①演进阶段一获得锁就执行业务逻辑,没有获得锁就继续调用这个方法形成一个自旋,就类似于synchronized。伪代码:public void getData(){ boolean lock = redisTemplate.opsForValue.setUfAbsent("lock","1111"); if(lock){ // 执行业务.. // 删除锁 redisTemplate.delete("lock");原创 2020-05-29 15:27:25 · 303 阅读 · 0 评论 -
Redis - Redis集群及主从复制、哨兵模式
Redis主从复制主从复制,是指将一台Redis服务器的数据,复制到其他的Redis服务器。前者称为主节点(master/leader),后者称为从节点(slave/follower);数据的复制是单向的,只能由主节点到从节点。Master以写为主,Slave 以读为主。默认情况下,每台Redis服务器都是主节点。且一个主节点可以有多个从节点(或没有从节点),但一个从节点只能有一个主节点...原创 2020-05-05 01:27:53 · 1283 阅读 · 0 评论 -
Redis - 消息发布订阅机制
Redis 发布订阅(pub/sub)是一种消息通信模式:发送者(pub)发送消息,订阅者(sub)接收消息。发布者生产消息放到队列里,多个监听队列的消费者都会收到同一份消息。Redis客户端可以订阅任意数量的频道。订阅/发布消息图下图展示了频道 channel1 , 以及订阅这个频道的三个客户端 —— client2 、 client5 和 client1 之间的关系:当有新消息通过...原创 2020-05-04 13:30:31 · 998 阅读 · 0 评论 -
Redis - 事务与乐观锁
事务Redis的事务与MySQL的事务差别较大。Redis的事务本质是一组命令的集合。也就是说一个事务中的所有命令都会被序列化,在事务执行的时候,会按照顺序执行这些命令。即Redis具有:一次性、顺序性、排他性(不受其他命令干扰)。在Redis中,事务没有隔离级别的概念。Redis事务流程1、开启事务(multi)2、命令入队(即依次输入命令)3、执行事务(exec)所有命令都是...原创 2020-05-03 17:59:04 · 163 阅读 · 0 评论 -
SpringBoot - 整合Redis缓存cache及键值序列化
前面的SpringCache缓存说过在没有引入其他缓存中间件时,默认使用的是ConcurrentMapCacheManager=ConcurrentMapCache,是将数据保存在ConcurrentMap<Object, Object>中。在实际开发中,我们一般都会使用redis、memcached、ehcache来作为缓存中间件。整合RedisRedis是一个开源(BSD许可...原创 2020-03-19 11:06:41 · 2250 阅读 · 1 评论 -
RedisTemplate - 常用集合之bound...Ops系列
一、boundValueOps简单的Key-Value操作。1、BoundValueOperationsBoundValueOperations就是一个绑定key的对象,我们可以通过这个对象来进行与key相关的操作。BoundValueOperations boundValueOps = redisTemplate.boundValueOps("lcy");2、set(V value)...原创 2020-03-18 01:05:13 · 18228 阅读 · 7 评论 -
RedisTemplate - 常用集合之opsFor系列
一、opsForValue简单的Key-Value操作1、set(K key, V value)该方法是向Redis新增一个key-value,由方法参数可知k-v可以是泛型,也就是说我们k-v不一定要是传统的String-String,还可以是Object-Object。redisTemplate.opsForValue().set("lcy",'lcy');User user1 = ...原创 2020-03-17 21:18:12 · 5026 阅读 · 4 评论 -
Redis - 缓存穿透、缓存击穿、缓存雪崩
缓存穿透缓存穿透是指缓存和数据库中都没有的数据,而用户不断发起请求,如发起为id为小于0的数据或id为特别大等不存在的数据。这时的用户很可能是攻击者,攻击会导致数据库压力过大。举例代码:/** * 通过分类id查询广告集合 * @param categoryId 广告分类id * @return 广告集合 */public List<Content> findCon...原创 2020-02-22 16:56:49 · 234 阅读 · 0 评论 -
Redis - Jedis简介及SpringDataRedis的使用
JedisJedis是Redis官方推荐的Java连接开发工具,使用Jedis操作Redis需要导入commons-pool2和jedis的jar包。常用API基本与操作命令一致,下面所示只是常用API,如果想了解更多API可以百度搜索,这里不详细列出。/** * 创建Jedis对象 * host:Redis服务器地址 * port:Redis服务端口 */J...原创 2020-01-28 00:46:56 · 556 阅读 · 0 评论 -
Redis - 数据类型基本操作命令
Redis是一种高级的key-value的存储系统,其中value支持五种数据类型:String(字符串)、hash(哈希)、list(字符串列表)、set(字符串集合)、sorted set(序字符串集合)。先进入redis所在位置,进入6379/bin文件夹下,打开Redis客户端(输入命令 ./reds-cli)。本文所涉及命令,是常用命令(基本命令),其他不常用的命令可以去百度了解一下...原创 2020-01-27 21:23:32 · 472 阅读 · 0 评论 -
Redis - redis.conf配置文件及数据持久化方案
Redis的高性能是由于其将所有数据都存储在了内存中,为了使Redis在重启之后仍能保证数据不丢失,需要将数据从内存中同步到硬盘中,这一过程就是持久化。Redis支持两种方式的持久化,可以单独使用其中一种或将二者结合使用。RDB持久化(默认支持,无需配置)该机制是指在指定的时间间隔内将内存中的数据集快照写入磁盘。AOF持久化该机制将以日志的形式记录服务器所处理的每一个写操作,在...原创 2020-01-27 00:44:13 · 9404 阅读 · 0 评论 -
Redis - 安装及设置认证密码
Linux环境下 - CentOS 71.将redis的安装包redis-4.0.9.tar.gz拷贝到/usr/local下2.进入/usr/local下,进行解压命令:tar -xvf redis-4.0.9.tar.gz3.进入redis-4.0.9文件夹下进行编译依次输入命令:⑴make ⑵make install PREFIX='/usr/local/redi...原创 2019-10-28 20:44:41 · 442 阅读 · 0 评论 -
NoSQL - Redis概述及其数据类型
什么是NoSQLNoSQL(NoSQL = Not Only SQL),意即“不仅仅是SQL”,是一项全新的数据库理念,泛指非关系型的数据库。NoSQL解决什么问题web程序不再仅仅专注在功能上,同时也在追求性能。1.High performance:对数据库高并发读写的需求现在数据库并发负载非常高,往往要达到每秒上万次读写请求关系数据库应付上万次SQL查询还勉强顶得住...原创 2019-10-28 20:18:57 · 116 阅读 · 0 评论