# RedisCache
**Repository Path**: darkidiot/RedisCache
## Basic Information
- **Project Name**: RedisCache
- **Description**: RedisCache是基于Jedis的SDK。 ①强大的泛型支持,实现了任意java对象简单存\取 ②增强缓存接口:支持防穿透设计,以及本地缓存同步更新 ③提供多种分布式锁,分布式队列支持 ④个性化的redis源配置支持
- **Primary Language**: Java
- **License**: Apache-2.0
- **Default Branch**: master
- **Homepage**: None
- **GVP Project**: No
## Statistics
- **Stars**: 177
- **Forks**: 82
- **Created**: 2016-10-14
- **Last Updated**: 2024-10-11
## Categories & Tags
**Categories**: cache-modules
**Tags**: None
## README
Redis Cache
=
Tips:
-
required: JDK1.5+
Overview
-
#### `RedisCache`是基于`Jedis`的SDK。
+ ①强大的泛型支持,实现了任意java对象简单存\取
+ ②增强`缓存`接口:支持防穿透设计,以及本地缓存同步更新
+ ③提供多种`分布式锁`,`分布式队列`支持
+ ④个性化的redis源配置支持
# Usage:
### RedisCache
`Normal Style`
```Java
IRedisMap cache = Redis.use("redisSourceName");
User user = new User();
cache.put(1001,user);
User redisUser = cache.get(1001);
```
`Fluent Style`
```Java
IRedisMap cache = Redis.create().setServiceName("redisSourceName").build();
User user = new User();
cache.put(1001,user);
User redisUser = cache.get(1001);
```
### RedisLock
`Normal Style`
```Java
Lock lock = RedisLock.useSimpleRedisLock("simpleLock", "redisSourceName");
try {
lock.lock();
lock.isLocking();
} finally {
lock.unlock();
}
```
`Fluent Style`
```Java
Lock lock = RedisLock.create().setService("redisSourceName").setLockName("simpleLock").useSimpleRedisLock();
try {
lock.lock();
lock.isLocking();
} finally {
lock.unlock();
}
```
### RedisQueue
`Normal Style`
```Java
Queue queue = RedisQueue.useSimpleFifoQueue("simpleQueue","redisSourceName");
queue.enqueue(task1,task2,task3);
Task task = queue.dequeue();
```
`Fluent Style`
```Java
Queue queue = RedisQueue.create().setService("redisSourceName").setQueueName("simpleQueue").useSimpleFifoQueue();
queue.enqueue(task1,task2,task3);
Task task = queue.dequeue();
```
# Configuration
## pattern I @for connection@
>>> service.names=redisSourceName,redisSourceName1,...
### Stand-Alone
>>> redisSourceName.ip = 127.0.0.1
>>> redisSourceName.port = 6379
>>> redisSourceName.password=password
#### Simplified Way
>>> redisSourceName.ip-port-password = 127.0.0.1:6379?password
### Sentinel
>>> redisSourceName1.is.cluster = true
>>> redisSourceName1.sentinel.master.name = masterName
>>> redisSourceName1.sentinel.hosts = 127.0.0.1:6379;127.0.0.1:6389;127.0.0.1:6379;127.0.0.1:6399
>>> redisSourceName1.password = password
## pattern II @for basic@
>>> redisSourceName.open.local.cache = true
>>> redisSourceName[.read].timeoutInMillis = 10000
>>> redisSourceName[.write].timeoutInMillis = 10000
>>> redisSourceName[.read].maxTotal = 8
>>> redisSourceName[.write].maxTotal = 8
>>> redisSourceName[.read].maxIdle = 20
>>> redisSourceName[.write].maxIdle = 20
>>> redisSourceName[.read].maxWait = 2000
>>> redisSourceName[.write].maxWait = 2000
>>> redisSourceName[.read].testOnBorrow = true
>>> redisSourceName[.write].testOnBorrow = true
>>> redisSourceName[.read].testOnReturn = false
>>> redisSourceName[.write].testOnReturn = false
# Dependencies:
redis.clients
jedis
org.slf4j
slf4j-log4j12
commons-logging
commons-logging
org.slf4j
slf4j-api
com.google.guava
guava
com.google.code.gson
gson