【无标题】

前言

闪聚支付项目中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");
    }
    }

总结

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值