小言_互联网的博客

Springboot 基础6 - Redis实战

789人阅读  评论(0)

Redis 介绍: Redis 服务

Redis (REmote Dictionary Server) 是一个由Salvatore Sanfilippo 完成的key-value存储系统,是跨平台的非关系型数据库。

Redis 是一个开源的使用ANSI C语言编写、遵循BSD 协议的、支持网络、可基于内存、分布式、可选择持久性的键值对存储数据库,并提供多语言的API。

Redis 通常被认为是数据结构服务器,其值可以是字符串、哈希、列表、集合以及有序集合。

Redis 优点

异常快,每秒可以执行大约110000次写(set)操作

每秒可执行大约81000次读(get)操作

支持丰富的数据结构

操作具有原子性, 所有Redis 操作都是原子操作,这确保了两个客户端并发访问,Redis 服务器能接收更新的值。

多使用工具,缓存,消息队列(Redis 本地支持发布/订阅),应用程序中的任何短期数据。

Redis 安装

下载地址:

https://github.com/MSOpenTech/redis/releases

Redis 支持32位和64 位,下载完成后,解压后,文件夹下面包含许多子文件,打开cmd 窗口,将其切换到redis 目录下,输入命名:

D:\sdk\Redis-x64-5.0.9  redis-server.exe  redis.windows.conf

如果想使用redis 启动更加容易的话,可以使用 将redis 安装路径加入到环境变量中,直接点击 redis-server.exe 即可启动redis 服务。

SpringBoot 集成Redis 过程

1. 在pom.xml 中配置相关依赖 jar


  
  1. <dependency>
  2.   <groupId>org.springframework.boot </groupId>
  3.   <artifactId>spring-boot-starter-data-redis </artifactId>
  4. </dependency>

2.在SpringBoot 中配置核心文件

在application.properties 文件下添加配置redis 信息


  
  1. # 配置redis
  2. spring.redis.host:localhost
  3. spring.redis.password=
  4. spring.redis.port=6379

3. Redis 配置类及其使用

Redis 配置类


  
  1. ​
  2. // RedisConfig redisconfig 配置
  3. @Configuration
  4. public class RedisConfig {
  5.    /**
  6.     * key redis serializer: {@link StringRedisSerializer} and
  7.     * key redis serializer: {@link Jackson2JsonRedisSerializer}
  8.     **/
  9.    @Bean
  10.    public RedisTemplate <String, Object> redisTemplate(RedisConnectionFactory factory) {
  11.        // 创建对象
  12.        RedisTemplate <String, Object> template = new RedisTemplate <>();
  13.        Jackson2JsonRedisSerializer valueRedisSerializer = new Jackson2JsonRedisSerializer(Object.class);
  14.        //设置Redis的value为json格式,并存储对象信息的序列化类型
  15.        ObjectMapper objectMapper = new ObjectMapper();
  16.        objectMapper.setVisibility(PropertyAccessor.ALL, JsonAutoDetect.Visibility.ANY);
  17.        objectMapper.enableDefaultTyping(ObjectMapper.DefaultTyping.NON_FINAL);
  18.        valueRedisSerializer.setObjectMapper(objectMapper);
  19. ​
  20.        // 创建一个keyRedisSerializer
  21.        RedisSerializer keyRedisSerializer = new StringRedisSerializer();
  22.        // 设置信息
  23.        template.setKeySerializer(keyRedisSerializer);
  24.        template.setValueSerializer(valueRedisSerializer);
  25.        template.setHashKeySerializer(keyRedisSerializer);
  26.        template.setHashValueSerializer(valueRedisSerializer);
  27.        template.setConnectionFactory(factory);
  28.        template.afterPropertiesSet();
  29.        return template;
  30.   }
  31. ​
  32.    // redisUtils() 方法
  33.    @Bean
  34.    public RedisUtils redisUtils(@Autowired RedisTemplate redisTemplate) {
  35.        return new RedisUtils(redisTemplate);
  36.   }
  37. }
  38. ​

Redis 工具类, 首先redis 的增删改查等操作,针对多种数据类型的数据


  
  1. ​
  2. /**
  3. * redis工具类
  4. *
  5. * @author Jone
  6. */
  7. // RedisUtils
  8. @Slf4j
  9. public class RedisUtils {
  10. ​
  11.    // 初始化变量
  12.    private static Logger logger = LoggerFactory.getLogger(RedisUtils.class);
  13. ​
  14. ​
  15.    private static RedisTemplate redisTemplate;
  16. ​
  17.    public RedisUtils(RedisTemplate redisTemplate) {
  18.        this.redisTemplate = redisTemplate;
  19.   }
  20. ​
  21.    // =============================common============================
  22. ​
  23. ​
  24.    /**
  25.     * 判断key是否存在
  26.     *
  27.     * @param key 键
  28.     * @return true 存在 false不存在
  29.     */
  30.    public Boolean hasKey(String key) {
  31.        try {
  32.            return redisTemplate.hasKey(key);
  33.       } catch (Exception e) {
  34.            logger.error("判断key是否存在异常: {}", e);
  35.            return false;
  36.       }
  37.   }
  38. ​
  39.    /**
  40.     * 普通缓存获取
  41.     *
  42.     * @param key 键
  43.     * @return 值
  44.     */
  45.    public Object get(String key) {
  46.        return key == null ? null : redisTemplate.opsForValue().get(key);
  47.   }
  48. ​
  49.    /**
  50.     * 删除
  51.     * @param key
  52.     * @return
  53.     */
  54.    public boolean del(String ... key){
  55.        if(key!=null&&key.length>0){
  56. ​
  57.                redisTemplate.delete(key[0]);
  58.                return true;
  59.           }else{
  60.                redisTemplate.delete(CollectionUtils.arrayToList(key));
  61.                return true;
  62.           }
  63.       }
  64.        return false;
  65.   }
  66. ​
  67.    // SET JIHE
  68.    public Set getKeys(){
  69.       return redisTemplate.keys("*");
  70.   }
  71. ​
  72.    /**
  73.     * 普通缓存放入
  74.     *
  75.     * @param key   键
  76.     * @param value 值
  77.     * @return true成功 false失败
  78.     */
  79.    public Boolean set(String key, Object value) {
  80.        try {
  81.            redisTemplate.opsForValue().set(key, value);
  82.            return true;
  83.       } catch (Exception e) {
  84.            logger.error("set异常: {}", e);
  85.            return false;
  86.       }
  87.   }
  88. }

 

配置完备之后,自动配置RedisTemplate ,需要操作redis 的类中注入redisTeplate,如下所示:


  
  1. // 使用RedisTemplate                                                                                
  2. @Autowired
  3. private RedisTemplate <String, String> redisTemplate;
  4. ​
  5. @Autowired
  6. private RedisTemplate <Object, Object> redisTemplate;

转载:https://blog.csdn.net/it_lxg123/article/details/117425653
查看评论
* 以上用户言论只代表其个人观点,不代表本网站的观点或立场