zoukankan      html  css  js  c++  java
  • springboot之redis的应用

    1、redis是一个key-value存储系统。和Memcached类似,它支持存储的value类型相对更多,包括string(字符串)、list(链表)、set(集合)、zset(sorted set --有序集合)和hash(哈希类型)。

    2、这里我们重点介绍一下redis在springboot框架中的一些应用,主要是应用在spring-data-redis下面的RedisTemplate来实现数据的保存和删除。

    3、我建立了一个工程来实现redis的各种访问。

      1)项目目录结构

      

      2)pom.xml.配置 

    <?xml version="1.0" encoding="UTF-8"?>
    <project xmlns="http://maven.apache.org/POM/4.0.0"
             xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
             xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
        <modelVersion>4.0.0</modelVersion>
    
        <groupId>com.troy</groupId>
        <artifactId>springbootredis</artifactId>
        <version>1.0-SNAPSHOT</version>
        <parent>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-parent</artifactId>
            <version>1.5.7.RELEASE</version>
        </parent>
        <dependencies>
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-web</artifactId>
                <version>1.5.7.RELEASE</version>
            </dependency>
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-data-redis</artifactId>
                <version>1.5.7.RELEASE</version>
            </dependency>
        </dependencies>
    
    </project>

      3)application.yml配置

    spring:
      redis:
        host: 192.168.5.10
        port: 6379
    server:
      port: 8082

    这里说明一下:我这边redis是我自己本地搭建的。没有设置密码。

    redis的搭建可以参考:http://www.cnblogs.com/ll409546297/p/6993778.html

    过程中如果过存在问题可以参考:http://www.cnblogs.com/ll409546297/p/7698330.html

      4)IRedisService接口包含相关的处理

    public interface IRedisService {
    
        /**
         * 保存String
         * @param key
         * @param value
         * @return
         */
        public Boolean setString(String key,String value);
    
        /**
         * 获取String
         * @param key
         * @return
         */
        public String getString(String key);
    
        /**
         * 保存list
         * @param key
         * @param list
         * @return
         */
        public Boolean setList(String key, List<String> list);
    
        /**
         * 获取list
         * @param key
         * @return
         */
        public List<String> getList(String key);
    
        /**
         * 保存mao
         * @param key
         * @param map
         * @return
         */
        public Boolean setHashMap(String key, Map<String,String> map);
    
        /**
         * 获取map
         * @param key
         * @return
         */
        public Map<String,String> getHashMap(String key);
    
        /**
         * 删除reids缓存
         * @param key
         * @return
         */
        public Boolean removeKey(String key);
    
    }

      5)RedisServiceImpl实现过程

    @Service
    @Transactional
    public class RedisServiceImpl implements IRedisService{
    
        @Autowired
        private RedisTemplate<String,String> redisTemplate;
    
        /**
         * 保存String
         * @param key
         * @param value
         * @return
         */
        @Override
        public Boolean setString(String key, String value) {
            ValueOperations<String,String> valueOperations = redisTemplate.opsForValue();
            valueOperations.set(key,value);
            return true;
        }
    
        /**
         * 获取String
         * @param key
         * @return
         */
        @Override
        public String getString(String key) {
            ValueOperations<String,String> valueOperations = redisTemplate.opsForValue();
            return valueOperations.get(key);
        }
    
        /**
         * 保存list
         * @param key
         * @param list
         * @return
         */
        @Override
        public Boolean setList(String key, List<String> list) {
            ListOperations<String,String> listListOperations = redisTemplate.opsForList();
            if (list != null && list.size() > 0) {
                for (int i = 0; i < list.size(); i++) {
                    //右边入栈,保持最后一个数据在右边
                    listListOperations.rightPush(key,list.get(i));
                }
            }
            return true;
        }
    
        /**
         * 获取list
         * @param key
         * @return
         */
        @Override
        public List<String> getList(String key) {
            ListOperations<String,String > listOperations = redisTemplate.opsForList();
            return listOperations.range(key,0,-1);//-1代表最后一个数字,-2代表倒数第二个
        }
    
        /**
         * 保存mao
         * @param key
         * @param map
         * @return
         */
        @Override
        public Boolean setHashMap(String key, Map<String, String> map) {
            HashOperations<String,String,String> hashOperations = redisTemplate.opsForHash();
            hashOperations.putAll(key,map);
            return true;
        }
    
        /**
         * 获取map
         * @param key
         * @return
         */
        @Override
        public Map<String, String> getHashMap(String key) {
            HashOperations<String,String,String> hashOperations = redisTemplate.opsForHash();
            return hashOperations.entries(key);
        }
    
        /**
         * 删除reids缓存
         * @param key
         * @return
         */
        @Override
        public Boolean removeKey(String key) {
            redisTemplate.delete(key);
            return true;
        }
    }

    值得注意的是:RedisTemplate是直接注入使用的,并没有做任何配置,这里要归功于spring-data-redis的集成使用。

    相比于springmvc的形式,这里简化了很多步骤。

    springmvc的相关搭建可以参考:http://www.cnblogs.com/ll409546297/p/7203427.html

      6)最后写个一个测试controller,这个只是为了方便测试,实际开发中基本没有这么处理的。。

    @RestController
    @RequestMapping("/api")
    public class RedisResource {
    
        @Autowired
        private IRedisService redisService;
    
        /**
         * 添加String
         * @param map
         * @return
         */
        @RequestMapping(value = "/addString",method = RequestMethod.POST)
        public Object addString(@RequestBody Map<String,Object> map) {
            return redisService.setString(map.get("key").toString(),map.get("value").toString());
        }
    
        /**
         * 获取string
         * @param map
         * @return
         */
        @RequestMapping(value = "/getString",method = RequestMethod.POST)
        public Object getString(@RequestBody Map<String,Object> map) {
            return redisService.getString(map.get("key").toString());
        }
    
        /**
         * 添加list
         * @param map
         * @return
         */
        @RequestMapping(value = "/addList",method = RequestMethod.POST)
        public Object addList(@RequestBody Map<String,Object> map) {
            return redisService.setList(map.get("key").toString(), (ArrayList<String>)map.get("value"));
        }
    
        /**
         * 获取list
         * @param map
         * @return
         */
        @RequestMapping(value = "/getList",method = RequestMethod.POST)
        public Object getList(@RequestBody Map<String,Object> map) {
            return redisService.getList(map.get("key").toString());
        }
    
        /**
         * 添加map
         * @param map
         * @return
         */
        @RequestMapping(value = "/addHashMap",method = RequestMethod.POST)
        public Object addHashMap(@RequestBody Map<String,Object> map) {
            return redisService.setHashMap(map.get("key").toString(),(HashMap)map.get("value"));
        }
    
        /**
         * 获取map
         * @param map
         * @return
         */
        @RequestMapping(value = "/getHashMap",method = RequestMethod.POST)
        public Object getHashMap(@RequestBody Map<String,Object> map) {
            return redisService.getHashMap(map.get("key").toString());
        }
    
        /**
         * 删除redis缓存
         * @param map
         * @return
         */
        @RequestMapping(value = "/remove",method = RequestMethod.POST)
        public Object remove(@RequestBody Map<String,Object> map) {
            return redisService.removeKey(map.get("key").toString());
        }

      7)基本的使用过程就是这些,redis的服务,在使用的使用效果很不错,在做某些数据初始化的时候,效果很好。

      8)看一下最后的效果

      

    4、这是只介绍了部分比较常使用的几种方式,如果自己想处理备份或者持久化,可以自己研究一下。

  • 相关阅读:
    几款JS地图插件比较
    Objective-C ,ios,iphone开发基础:多个视图(view)之间的切换2,使用导航栏控制,以及视图之间传值。
    学习嵌入式—导火线
    Linux MySQL 5.1源码安装
    QT 一些非常常用的操作
    QT 下把编辑框内的中文字符转换为 char*
    delphi datasnap 心跳包
    ddd
    Qt 如何处理密集型耗时的事情(频繁调用QApplication::processEvents)
    Python基础-输入输出(IO)
  • 原文地址:https://www.cnblogs.com/ll409546297/p/7699990.html
Copyright © 2011-2022 走看看