前言
闪聚支付项目中redis的使用,使用redis保存支付渠道配置参数
提示:以下是本篇文章正文内容,下面案例可供参考
一、使用步骤
1.引入依赖坐标
代码如下(示例):
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-redis</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
2.编写接口(Cache)并实现(RedisCache)
接口Cache代码如下 :
public interface Cache {
// 列出所有的key
Set<String> getKeys();
Set<String> getKeys(String pattern);
//检查给定key是否存在
Boolean exists(String key);
//移除给定的一个或多个key。如果key不存在,则忽略该命令。
void del(String key);
//简单的字符串设置
void set(String key, String value);
void set(String key, String value, Integer expiration);
//返回key所关联的字符串值
String get(String key);
//key seconds 为给定key设置生存时间。当key过期时,它会被自动删除。
void expire(String key, int expire);
//如果key已经存在并且是一个字符串,APPEND命令将value追加到key原来的值之后。
void append(String key, String value);
//获取旧值返回新值,不存在返回nil
String getset(String key, String newValue);
//分布锁
boolean setnx(String key, String value);
//计数器
Long incrBy(String key, Long delta);
}
实现类代码如下:
public class RedisCache implements Cache {
private StringRedisTemplate redisTemplate;
public RedisCache(StringRedisTemplate redisTemplate) {
this.redisTemplate = redisTemplate;
}
/**
* 模糊查询,获取key
* @param pattern
* @return
*/
@Override
public Set<String> getKeys(String pattern) {
return redisTemplate.keys(pattern);
}
/**
* 获取所有key
* @return
*/
@Override
public Set<String> getKeys() {
return getKeys("*");
}
/**
* 判断key是否存在
* @param key
* @return
*/
@Override
public Boolean exists(String key) {
return redisTemplate.hasKey(key);
}
/**
* 根据key删除
* @param key
*/
@Override
public void del(String key) {
redisTemplate.delete(key);
}
/**
* 存入redis
* @param key
* @param value
*/
@Override
public void set(String key, String value) {
redisTemplate.opsForValue().set(key, value);
}
/**
* 存入redis并设置失效时间
* @param key
* @param value
* @param expire
*/
@Override
public void set(String key, String value, Integer expire) {
redisTemplate.opsForValue().set(key, value, expire, TimeUnit.SECONDS);
}
/**
* 根据key获取value
* @param key
* @return
*/
@Override
public String get(String key) {
return redisTemplate.opsForValue().get(key);
}
/**
* 设置失效时间
* @param key
* @param expire
*/
@Override
public void expire(String key, int expire) {
redisTemplate.expire(key, expire, TimeUnit.SECONDS);
}
/**
* 在原有的值基础上新增字符串到末尾
* @param key
* @param value
*/
@Override
public void append(String key, String value) {
redisTemplate.opsForValue().append(key, value);
}
/**
* 获取原来key键对应的值并重新赋新值
* @param key
* @param newValue
* @return
*/
@Override
public String getset(String key, String newValue) {
return redisTemplate.opsForValue().getAndSet(key, newValue);
}
/**
* 如果键不存在则新增,存在则不改变已经有的值
* @param key
* @param value
* @return
*/
@Override
public boolean setnx(String key, String value) {
return redisTemplate.opsForValue().setIfAbsent(key, value);
}
/**
* 以增量的方式将long值存储在变量中
* @param key
* @param delta
* @return
*/
@Override
public Long incrBy(String key, Long delta) {
return redisTemplate.opsForValue().increment(key, delta);
}
}
3.编写配置类,把对象交给容器管理
@Configuration
public class RedisConfig {
@Bean
public Cache cache(StringRedisTemplate stringRedisTemplate){
return new RedisCache(stringRedisTemplate);
}
}
此处框架会自动注入stringRedisTemplate对象
4.测试
@SpringBootTest
@RunWith(SpringRunner.class)
@Slf4j
public class TestRedis {
@Autowired
Cache cache;
@Test
public void testRedis(){
cache.set("name","zhangsan");
}
}