# RedisCache
**Repository Path**: qianjinzhuxinlin/RedisCache
## Basic Information
- **Project Name**: RedisCache
- **Description**: RedisCache是基于Jedis的SDK。  ①强大的泛型支持,实现了任意java对象简单存\取 ②增强缓存接口:支持防穿透设计,以及本地缓存同步更新 ③提供多种分布式锁,分布式队列支持 ④个性化的redis源配置支持
- **Primary Language**: Java
- **License**: Not specified
- **Default Branch**: master
- **Homepage**: None
- **GVP Project**: No
## Statistics
- **Stars**: 0
- **Forks**: 82
- **Created**: 2023-03-17
- **Last Updated**: 2023-03-18
## Categories & Tags
**Categories**: Uncategorized
**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