您好,欢迎访问代理记账网站
  • 价格透明
  • 信息保密
  • 进度掌控
  • 售后无忧

Springboot集成Redis

今天我们来在Springboot中集成下Redis,下面我们开始来集成。

第一步:

在pom.xml中添加如下配置,这里的版本不是唯一,可以根据当前springboot自身版本进行调整。


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

第二步:

添加yml配置,我这里是application.yml,如果是properties同理

spring:  
  redis:
    database: 0
    host: localhost
    port: 6379
    timeout: 30000

第三步:

添加接口类



import java.util.List;
import java.util.Map;
import java.util.Set;

/**
 * @ClassName RedisService
 * @Deacription Redis接口
 * @Author Monkey
 * @Date 2020/9/9实现
 * @Version 1.0
 **/
public interface RedisService {

    /**
     * 获取key
     *
     * @param key
     * @return
     */
    String get(String key);

    /**
     * 删除key
     *
     * @param key
     */
    void del(String key);

    /**
     * 设置key值
     *
     * @param key   key
     * @param value value
     */
    void set(String key, String value);

    /**
     * SetNX ,如果已经有值,则返回falae ,如果设置成功则返回ture
     *
     * @param key   key
     * @param value Value
     * @return false 设置失败,该key已经有值, true,设置成功
     */

    boolean setnx(String key, String value);

    /**
     * 设置key值,同时加上失效时间
     *
     * @param key        key
     * @param value      value
     * @param expireTime 失效时间,单位 秒
     */
    void set(String key, String value, long expireTime);

    /**
     * 给key加失效时间
     *
     * @param key        key
     * @param expireTime 失效时间,单位 秒
     */
    void expire(String key, long expireTime);


    /**
     * 单个key递增
     *
     * @param key   key
     * @param delta 递增值
     * @return 递增后的值,
     */
    long incr(String key, long delta);

    /**
     * Hash设置值得操作
     *
     * @param key
     * @param field
     * @param value
     */
    void hset(String key, String field, String value);

    /**
     * 批量写入Hash表
     *
     * @param key
     * @param values
     */
    void hmset(String key, Map<String, String> values);

    /**
     * 返回哈希表key所有的字段和值
     *
     * @param key
     * @return
     */
    Map<Object, Object> hgetAll(String key);

    /**
     * Hash获取值操作
     *
     * @param key
     * @param field
     * @return
     */
    String hget(String key, String field);

    /**
     * Hash判断值是否存在
     *
     * @param key
     * @param field
     * @return
     */
    boolean hexists(String key, String field);

    /**
     * Hash删除一个值
     *
     * @param key
     * @param field
     * @return
     */
    long hdel(String key, Object... field);

    /**
     * 为哈希表 key 中的域 field 的值加上增量 increment
     *
     * @param key
     * @param field
     * @param increment
     * @return
     */
    long hincrby(String key, String field, long increment);

    /**
     * Set 新增数据
     *
     * @param key
     * @param value
     * @return
     */
    long sadd(String key, String... value);

    /**
     * Set 判断value值是否存在
     *
     * @param key
     * @param value
     * @return
     */
    boolean sismember(String key, String value);

    /**
     * Set 删除元素,不存在的会被忽略
     *
     * @param key
     * @param value
     * @return
     */
    long srem(String key, Object... value);

    /**
     * Set 随机从set里取值<br>
     * count 为正数,取值不会重复,如果count大于set的基数,返回值整个set<br>
     * count 为负数,取值可能重复,如果count 的绝对值大于集合的基数,那么返回的数组的长度为 count 的绝对值
     *
     * @param key
     * @param count
     * @return
     */
    List<String> srandmember(String key, long count);

    /**
     * 获取set所有值
     *
     * @param key
     * @return
     */
    Set<String> smembers(String key);

    /**
     * 根据参数 count 的值,移除列表中与参数 value 相等的元素。
     *
     * @param key   key
     * @param count 数量
     * @param value 值
     */
    void lrem(String key, int count, String value);

    /**
     * 返回列表 key 中,下标为 index 的元素。
     *
     * @param key   key
     * @param index 下标
     * @return 该位置上的值
     */
    String lindex(String key, int index);

    /**
     * 将一个或多个值 value 插入到列表 key 的表尾(最右边)。
     *
     * @param key   key
     * @param value 值
     */
    void lrpush(String key, String value);


    /**
     * 判断key是否存在
     *
     * @param key key
     * @return true存在, false 不存在
     */
    boolean exists(String key);
}

第四步:

添加接口实现类

import com.ruisitech.mabi.service.RedisService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.redis.core.StringRedisTemplate;
import org.springframework.stereotype.Service;

import java.util.List;
import java.util.Map;
import java.util.Set;
import java.util.concurrent.TimeUnit;

/**
 * @ClassName RedisService
 * @Deacription Redis接口实现
 * @Author Monkey
 * @Date 2020/9/9实现
 * @Version 1.0
 **/
@Service("redisService")
public class RedisServiceImpl implements RedisService {

    @Autowired
    private StringRedisTemplate redisTemplate;

    @Override
    public String get(String key) {
        return redisTemplate.opsForValue().get(key);
    }

    @Override
    public void del(String key) {
        redisTemplate.delete(key);
    }

    @Override
    public void set(String key, String value) {
        redisTemplate.opsForValue().set(key, value);
    }

    @Override
    public boolean setnx(String key, String value) {
        return redisTemplate.opsForValue().setIfAbsent(key, value);
    }

    @Override
    public void set(String key, String value, long expireTime) {
        redisTemplate.opsForValue().set(key, value);
        this.expire(key, expireTime);
    }

    @Override
    public void expire(String key, long expireTime) {
        redisTemplate.expire(key, expireTime, TimeUnit.SECONDS);
    }

    @Override
    public long incr(String key, long delta) {
        return redisTemplate.opsForValue().increment(key, delta);
    }

    @Override
    public void hset(String key, String field, String value) {
        redisTemplate.opsForHash().put(key, field, value);
    }

    @Override
    public Map<Object, Object> hgetAll(String key) {
        return redisTemplate.opsForHash().entries(key);
    }

    @Override
    public void hmset(String key, Map<String, String> values) {
        redisTemplate.opsForHash().putAll(key, values);
    }

    @Override
    public String hget(String key, String field) {
        Object value = redisTemplate.opsForHash().get(key, field);
        return value == null ? null : value.toString();
    }

    @Override
    public boolean hexists(String key, String field) {
        return redisTemplate.opsForHash().hasKey(key, field);
    }

    @Override
    public long hincrby(String key, String field, long increment) {
        return redisTemplate.opsForHash().increment(key, field, increment);
    }

    @Override
    public long hdel(String key, Object... field) {
        return redisTemplate.opsForHash().delete(key, field);
    }

    @Override
    public long sadd(String key, String... value) {
        Long result = redisTemplate.opsForSet().add(key, value);
        return result == null ? 0L : result;
    }

    @Override
    public boolean sismember(String key, String value) {
        Boolean result = redisTemplate.opsForSet().isMember(key, value);
        return result != null && result;
    }

    @Override
    public long srem(String key, Object... value) {
        Long result = redisTemplate.opsForSet().remove(key, value);
        return result == null ? 0L : result;
    }

    @Override
    public List<String> srandmember(String key, long count) {
        return redisTemplate.opsForSet().randomMembers(key, count);
    }

    @Override
    public Set<String> smembers(String key) {
        return redisTemplate.opsForSet().members(key);
    }

    @Override
    public void lrem(String key, int count, String value) {
        redisTemplate.opsForList().remove(key, count, value);
    }

    @Override
    public String lindex(String key, int index) {
        return redisTemplate.opsForList().index(key, index);
    }

    @Override
    public void lrpush(String key, String value) {
        redisTemplate.opsForList().rightPush(key, value);
    }


    @Override
    public boolean exists(String key) {
        return redisTemplate.hasKey(key);
    }
}

第五步:

测试redis的使用

@RestController
@RequestMapping(value = "/frame")
@Api(tags = "登出功能")
public class LogoutController extends BaseController {

	@Autowired
	private RedisService redisService;

	@GetMapping(value="/logout")
	@ApiOperation(value = "用户登出")
	public @ResponseBody Object logout(HttpServletRequest request){
		//删除token
		String token = request.getHeader("token");
		if (StringUtils.isNotBlank(token)){
			redisService.del(token);
		}
		return super.buildSucces();
	}
}

 


分享:

低价透明

统一报价,无隐形消费

金牌服务

一对一专属顾问7*24小时金牌服务

信息保密

个人信息安全有保障

售后无忧

服务出问题客服经理全程跟进