![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
redis
文章平均质量分 77
smartValentines
这个作者很懒,什么都没留下…
展开
-
【redis学习之五】基于redis的分布式锁实现
在单个JVM中,我们可以很方便的用sychronized或者reentrantLock在资源竞争时进行加锁,保证高并发下数据线程安全。但是若是分布式环境下,多个JVM同时对一个资源进行竞争时,我们该如何保证线程安全呢?分布式锁便能实现我们的要求。 在设计思路上,分布式锁和java自带的锁采用的方法是一样的。reentrantLock是基于AQS的,在AQS基类中维护了一个int类型的...原创 2018-05-06 16:51:16 · 198 阅读 · 0 评论 -
【redis学习之六】基于Redis的分布式session实现
在web应用中,我们经常会用session来保存已登录用户的相关信息,在单机应用中,由于所有的用户都访问同一个应用,而session都保存在此单机应用中所以并无不妥。但是随着用户并发量的上升,分布式系统势在必行,这就导致一个用户的访问请求可能会分发到不同的集群部署应用上处理,此时在某个应用上创建session存储信息可能换一个应用就找不到了。 那么如何解决这种问题呢?有三种思路:1、...原创 2018-06-12 21:41:33 · 577 阅读 · 0 评论 -
【redis学习之一】redis安装与运行
在linux下安装redis服务:1、首先下载tar包,解压,进入相应目录:wget http://download.redis.io/releases/redis-3.2.8.tar.gztar zxvf redis-3.2.8.tar.gzcd redis-3.2.8make因为redis是基于C写的,若是linux系统未安装C相关插件,make过程中可能报错:/bin/sh: cc: ...原创 2018-06-05 21:50:30 · 171 阅读 · 0 评论 -
【redis学习之七】基于Redis的分布式缓存常见问题
在使用redis做全局缓存的时候,基本的流程大概是这样的: 大概流程即为:①判断缓存是否存在②若存在则直接返回调用端③若不存在则从数据库加载数据④将加载的数据写入缓存⑤返回调用端 但是现实使用过程中还是有一些问题值得讨论一番1、redis和数据库双写一致性问题: 当发生写数据库操作的时候,若是insert情况,那我们在插入数据库后,是否也需将新写入的数据更新到缓存里呢?若是u...原创 2018-06-12 23:03:07 · 285 阅读 · 0 评论 -
【redis学习之二】Redis数据结构&&常用命令&&使用场景
String 在redis内部实现为SDS(simple dynamic string),为键值对类型,通过set key value 可以实现memcached的键值对缓存功能。亦可将对象序列化或转化为json后通过key-value形式存储。但是注意由于redis的单线程模型,若是value太大,单个string的读取将会缓慢,影响redis服务器效率,value的网络传输及在程序中反序...原创 2018-06-06 23:34:26 · 181 阅读 · 0 评论 -
【redis学习之三】Redis数据持久化
RDB RDB持久化功能会将redis内存快照保存到磁盘中,避免数据意外丢失,所生成的RDB文件是一个经过压缩的二进制文件,通过该文件可以还原生成RDB文件时的数据库状态。 RDB文件会在服务器启动时自动载入,而我们可以用SAVE和BGSAVE两个命令来手动触发RDB持久化操作,但是SAVE命令会阻塞服务器,此时redis将不能处理客户端请求。用户可以在redis.conf设置RDB自...原创 2018-06-07 21:47:47 · 207 阅读 · 0 评论 -
【redis学习之四】Redis的过期键处理及键淘汰策略
在redis中可以通过如下命令设置键的生存时间或生命周期:EXPIRE KEY TTL 命令用于将key的生存时间设置为ttl秒PEXPIRE KEY TTL 命令用于将key的生存时间设置为ttl毫秒EXPIREAT KEY TIMESTAMP 命令用于将key的过期时间设置为timestamp所指定的秒数时间戳PEXPIREAT KEY TIMESTAMP ...原创 2018-06-07 23:47:44 · 1167 阅读 · 0 评论