-
- 基本的对缓存对象get,set,del,expire操作功能; 2. 缓存淘汰:采取缓存过期淘汰策略,采用定期删除和惰性删除; 3. 缓存持久化:持久化到文件和数据库,从文件中恢复缓存数据; 4. 分布式缓存:实现扩容类分布式,实现服务器缓存均衡;
**客户端 >> set key1 value1 >> server存进map >> 返回ok 客户端 >> get key1 >> server >> 返回value1 **
- 服务器模块实现 :
- 服务器主线程监听客户机的连接请求;
- 获取客户端连接请求后开启一个线程处理请求;
- set,lset,hset命令缓存数据到Map内存当中;
- get命令返回对应数据,expire设置键过期时间,del删除指定键缓存;
- 客户机模块实现
- 客户端连接服务器,获取连接 ;
- set,lset,hset将缓存数据发送到服务器;
- get命令取得缓存数据;
- 缓存数据的Map
- 采用jdk 1.8版本的HashMap<String,KeyValueNodee>保存键值对对象,底层实现为红黑树,查找时间复杂度O(logn)
- 保持的键key:String类,采用字符串作为关键字key;
- 保持的值value:KeyValueNode
- timeout:设置键值对对象的过期时间,在当前时间后存活的秒数;
- value:保存的对应键的数据对象;
- 缓存数据淘汰策略
- 主动淘汰策略:周期性检查Map保持的键值对对象是否过期,进行移除;
- 惰性淘汰策略:在get命令时检查该目标对象是否过期,过期进行移除;
- 缓存检查时间:在配置文件redis.properties文件中进行配置;
- 缓存持久化策略
- 持久化 策略:采用在指定时间范围内缓存数据改变次数的多少持久化数据到硬盘;
- 持久化介质:持久化到文件或者数据库,服务关闭前将数据写到数据库和文件;
- 持久化配置:在配置文件redis.properties文件中进行配置;
- 备份服务器远程连接到主服务器,配置每隔一段时间获取主服务器数据备份到本地;
- 主服务器每次自己执行的命令发送至备份服务器,备份服务器本地执行 ,写入数据到硬盘;
- 分布式缓存实现负载均衡,对每个键值对数据的key使用CRC32进行HASH计算操作,根据HASH值和开启的主服务器槽分布确定该键值对应该发送到那个主服务器,实现各个服务器基本均衡缓存;
-
Notifications
You must be signed in to change notification settings - Fork 1
missbe/redis-java
Folders and files
Name | Name | Last commit message | Last commit date | |
---|---|---|---|---|
Repository files navigation
About
redis for java development.
Resources
Stars
Watchers
Forks
Releases
No releases published
Packages 0
No packages published