redis介绍
Redis(REmote DIctionary Server,远程数据字典服务器)是开源的内存数据库,常用作缓存或者消息队列。
- Redis的特点:
Redis存在于内存,使用硬盘作为持久化;每秒十万读写。
具有丰富的数据结构,字符串、哈希表、列表、集合、有序集合;提供交集、并集、差集等操作。
设置TTL存活时间,到期自动删除。
Redis单线程、Memcached多线程;对于一般的应用场景,单线程也足够使用,优势还是在于多数据类型、持久化。
可以将数据复制到任意数量的从服务器。
https://baike.baidu.com/item/Redis/6549233?fr=aladdin#5
java操作redis
- 1、在pom.xml文件中加入Redis包
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-redis</artifactId>
<version>1.5.8.RELEASE</version>
</dependency>
2、SpringBoot配置文件中配置Redis连接(properties方式配置)
1、简单的配置
spring.redis.host=127.0.0.1
spring.redis.port=6379
spring.redis.pool.max-active=1000
- 2、一主三从配置
spring.redis.host=127.0.0.1
spring.redis.port=6379
spring.redis.timeout=20000
spring.redis.cluster.nodes=192.168.1.115:8000,192.168.1.115:8001,192.168.1.115:8002
spring.redis.cluster.maxRedirects=6
spring.redis.pool.max-active=1000
spring.redis.pool.min-idle=0
spring.redis.pool.max-wait=-1
-3、redis操作工具类
/**
* 通过Redis存储和验证token的实现类
*
* @author ScienJus
* @date 2015/7/31.
* @see com.yiba.vpn.authorization.manager.TokenManager
*/
@Component
public class RedisTokenManager {
private RedisTemplate<String, String> redis;
@Autowired
public void setRedis(RedisTemplate redisTemplate) {
this.redis = redisTemplate;
//泛型设置成Long后必须更改对应的序列化方案
redis.setKeySerializer(new JdkSerializationRedisSerializer());
}
/**
* 根据key删除值
* @param key
*/
public void deleteKey(String key) {
redis.delete(key);
}
public void expireValue(String key, long time, TimeUnit timeUnit) {
//如果验证成功,说明此用户进行了一次有效操作,延长token的过期时间
redis.boundValueOps(key).expire(time, timeUnit);
}
/**
* 存储key~value
*
* @param key
* @param value
* @param time
*/
public void addValue(String key, String value, long time, TimeUnit timeUnit) {
redis.boundValueOps(key).set(value, time, timeUnit);
}
/**
* 根据key获取参数值
*
* @param key
* @return
*/
public String getValue(String key) {
return redis.boundValueOps(key).get();
}
/**
* 获取redis剩余生存时间(如果过期返回-2,其他都返回0)
*/
public Long ttlKey(String key) {
return redis.getExpire(key);
}
/**
* 指定时间类型---秒
*
* @param key
* @return
*/
public long getExpireTimeType(String key) {
long time = redis.getExpire(key, TimeUnit.SECONDS);
return time;
}
}