您的位置:首页 > 数据库 > Redis

Redis工具类对各种数据类型的操作

2017-08-17 12:39 375 查看
Redis工具类对string,list,hash,set,zset数据类型的操作。

添加依赖

<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-redis</artifactId>
</dependency>

Redis配置

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.cache.annotation.EnableCaching;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.data.redis.connection.RedisConnectionFactory;
import org.springframework.data.redis.core.*;

/**
* Created by Administrator on 2017/7/2.
* Redis模板配置,缓存配置
*/

@Configuration
@EnableCaching
public class RedisConfig {

@Autowired
RedisConnectionFactory redisConnectionFactory;

/**
* 实例化 RedisTemplate 对象
*/
@Bean
public RedisTemplate<String, Object> functionDomainRedisTemplate() {
RedisTemplate<String, Object> redisTemplate = new RedisTemplate<String, Object>();
initDomainRedisTemplate(redisTemplate, redisConnectionFactory);
return redisTemplate;
}

/**
* 设置数据存入 redis 的序列化方式
*/
private void initDomainRedisTemplate(RedisTemplate<String, Object> redisTemplate, RedisConnectionFactory factory) {
/*redisTemplate.setKeySerializer(new StringRedisSerializer());
redisTemplate.setValueSerializer(new JdkSerializationRedisSerializer());
redisTemplate.setHashKeySerializer(new StringRedisSerializer());
redisTemplate.setHashValueSerializer(new Jackson2JsonRedisSerializer(Object.class));*/
redisTemplate.setConnectionFactory(factory);
}

/**
* 实例化 HashOperations 对象,可以使用 Hash 类型操作
*/
@Bean
public HashOperations<String, String, Object> hashOperations(RedisTemplate<String, Object> redisTemplate) {
return redisTemplate.opsForHash();
}

/**
* 实例化 ValueOperations 对象,可以使用 String 操作
*/
@Bean
public ValueOperations<String, Object> valueOperations(RedisTemplate<String, Object> redisTemplate) {
return redisTemplate.opsForValue();
}

/**
* 实例化 ListOperations 对象,可以使用 List 操作
*/
@Bean
public ListOperations<String, Object> listOperations(RedisTemplate<String, Object> redisTemplate) {
return redisTemplate.opsForList();
}

/**
* 实例化 SetOperations 对象,可以使用 Set 操作
*/
@Bean
public SetOperations<String, Object> setOperations(RedisTemplate<String, Object> redisTemplate) {
return redisTemplate.opsForSet();
}

/**
* 实例化 ZSetOperations 对象,可以使用 ZSet 操作
*/
@Bean
public ZSetOperations<String, Object> zSetOperations(RedisTemplate<String, Object> redisTemplate) {
return redisTemplate.opsForZSet();
}

}

Redis操作

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.redis.core.*;
import org.springframework.stereotype.Service;

import javax.annotation.Resource;
import java.util.List;
import java.util.Map;
import java.util.Set;
import java.util.concurrent.TimeUnit;

@Service
public class RedisService {

@Autowired
private RedisTemplate<String, Object> redisTemplate;
// HashMap操作
@Resource
private HashOperations<String, String, Object> hashOperations;
// Object操作
@Resource
private ValueOperations<String, Object> valueOperations;
// List操作
@Resource
private ListOperations<String, Object> listOperations;

// set操作
@Resource
private SetOperations<String, Object> setOperations;
// ZSet操作
@Resource
private ZSetOperations<String, Object> zSetOperations;

//---------------------------------------------------------------------
// redisTemplate
//---------------------------------------------------------------------

/**
* 判断key是否存在
* @param key
*/
public boolean hasKey(String key) {
return redisTemplate.hasKey(key);
}

/**
* 删除key
* @param key
*/
public void delete(String key){
redisTemplate.delete(key);
}

/**
* 判断指定key的hashKey是否存在
* @param key
* @param hashKey
* @return
*/
public boolean hasKey(String key, String hashKey) {
return redisTemplate.opsForHash().hasKey(key, hashKey);
}

/**
* 设置超时时间
* @param key
* @param timeout
* @param unit
*/
public void expire(String key, final long timeout, final TimeUnit unit) {
redisTemplate.expire(key, timeout, unit);
}

/**
* 获取过期时间
* @param key
* @return
*/
public long ttl(String key){
return redisTemplate.getExpire(key);
}

/**
* 获取指定pattern的key
* @param pattern
* @return
*/
public Set<String> keys(String pattern) {
return redisTemplate.keys(pattern);
}

/**
* 删除多个key
* @param keys
*/
public void delete(Set<String> keys) {
redisTemplate.delete(keys);
}

/**
* 设置过期时间
* @param key
* @param expire
*/
private void setExpire (String key,long expire){
if (expire != -1) {
redisTemplate.expire(key, expire, TimeUnit.SECONDS);
}
}

//---------------------------------------------------------------------
// ValueOperations -> Redis String/Value 操作
//---------------------------------------------------------------------

/**
* 设置key-value值
*/
public void addValue(String key, Object value,long expire){
valueOperations.set(key, value);

setExpire(key,expire);
}

/**
* 设置key-value值,传入时间单位
*/
public void addValue(String key, Object value,long expire, TimeUnit timeUnit){
valueOperations.set(key, value, expire, timeUnit);

}

/**
* 设置key-value值, 无过期时间
*/
public void addValue(String key, Object value){
valueOperations.set(key, value);
}

/**
* 获取key的值
*
*/
public Object getValue(String key){
return valueOperations.get(key);
}

//---------------------------------------------------------------------
// HashOperations -> Redis Redis Hash 操作
//---------------------------------------------------------------------

/**
* 向redis 中添加内容
* @param key       保存key
* @param hashKey   hashKey
* @param data      保存对象 data
* @param expire    过期时间    -1:表示不过期
*/
public void addHashValue(String key,String hashKey, Object data, long expire) {
hashOperations.put(key, hashKey, data);

setExpire(key,expire);
}

/**
* Hash 添加数据
* @param key   key
* @param map   data
*/
public void addAllHashValue(String key, Map<String, Object> map, long expire) {
hashOperations.putAll(key, map);

setExpire(key,expire);
}

/**
* 删除hash key
* @param key       key
* @param hashKey   hashKey
*/
public long deleteHashValue(String key, String hashKey) {
return hashOperations.delete(key, hashKey);
}

/**
* 获取数据
*/
public Object getHashValue(String key, String hashKey) {
return hashOperations.get(key, hashKey);
}

/**
* 批量获取数据
*/
public List<Object> getHashAllValue(String key) {
return hashOperations.values(key);
}

/**
* 批量获取指定hashKey的数据
*/
public List<Object> getHashMultiValue(String key, List<String> hashKeys) {
return  hashOperations.multiGet(key, hashKeys);
}

/**
* 获取hash数量
*/
public Long getHashCount(String key) {
return hashOperations.size(key);
}

//---------------------------------------------------------------------
// ZSetOperations -> Redis Sort Set 操作
//---------------------------------------------------------------------

/**
* 设置zset值
*/
public boolean addZSetValue(String key, Object member, long score){
return zSetOperations.add(key, member, score);
}

/**
* 设置zset值
*/
public boolean addZSetValue(String key, Object member, double score){
return zSetOperations.add(key, member, score);
}

/**
* 批量设置zset值
*/
public long addBatchZSetValue(String key, Set<ZSetOperations.TypedTuple<Object>> tuples){
return zSetOperations.add(key, tuples);
}

/**
* 自增zset值
*/
public void incZSetValue(String key, String member, long delta){
zSetOperations.incrementScore(key, member, delta);
}

/**
* 获取zset数量
*/
public long getZSetScore(String key, String member){
Double score = zSetOperations.score(key, member);
if(score==null){
return 0;
}else{
return score.longValue();
}
}

/**
* 获取有序集 key 中成员 member 的排名 。其中有序集成员按 score 值递减 (从小到大) 排序。
*/
public Set<ZSetOperations.TypedTuple<Object>> getZSetRank(String key, long start, long end){
return zSetOperations.rangeWithScores(key, start, end);
}

//---------------------------------------------------------------------
// listOperations -> Redis List() 操作
//---------------------------------------------------------------------

/**
* 添加list列表
*/
public void addListValue(String key,Object list){
listOperations.leftPush(key,list);
}

/**
* 获取指定Key对应的list
*/
public Object getListValue(String key){
return listOperations.leftPop(key);
}

//---------------------------------------------------------------------
// setOperations -> Redis Set() 操作
//---------------------------------------------------------------------

/**
* 添加Set集合集合
*/
public void addSetValue(String key,Object list){
setOperations.add(key,list);
}

/**
* 获取指定Key对应的set
*/
public Object getSetValue(String key){
return setOperations.members(key);
}

/**
* 获取并移除指定key的值
*/
public Object popSetValue(String key){
return setOperations.pop(key);
}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息