zoukankan      html  css  js  c++  java
  • SpringBoot整合SpringData Redis

    添加redis的起步依赖:

    <!-- 配置使用redis启动器 -->
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-data-redis</artifactId>
    </dependency>

    在application.properties中配置redis的连接信息:

    #Redis
    spring.redis.host=127.0.0.1
    spring.redis.port=6379
    spring.redis.password=root
    #最大连接数
    spring.redis.jedis.pool.max-active=30
    #最大空闲数
    spring.redis.jedis.pool.max-idle=20
    #最小空闲连接数
    spring.redis.jedis.pool.min-idle=10
    #连接时的最大等待毫秒数
    spring.redis.jedis.pool.max-wait=3000

    注入RedisTemplate测试redis操作

    @RunWith(SpringRunner.class)
    @SpringBootTest(classes = Application.class)
    public class RedisTest {
    
        @Autowired
        private UserDao userDao;
        @Autowired
        private RedisTemplate<String, String> redisTemplate;
    
        @Test
        public void test() throws JsonProcessingException {
            // 从redis缓存中获得指定的数据
            String userListData = redisTemplate.boundValueOps("user.findAll").get();
            //如果redis中没有数据的话
            if (null == userListData) {
                //查询数据库获得数据
                List<User> users = userDao.findAll();
                //转换成json格式字符串
                ObjectMapper om = new ObjectMapper();
                userListData = om.writeValueAsString(users);
                //将数据存储到redis中,下次在查询直接从redis中获得数据,不用在查询数据库
                redisTemplate.boundValueOps("user.findAll").set(userListData);
                System.out.println("===============从数据库获得数据===============");
            } else {
                System.out.println("===============从redis缓存中获得数据===============");
            }
            System.out.println(userListData);
        }
    }

     Operations:

      redisTemplate有两个方法经常用到,一个是opsForXXX一个是boundXXXOps,XXX是value的类型,前者获取到一个Operation,但是没有指定操作的key,可以在一个连接(事务)内操作多个key以及对应的value;后者会获取到一个指定了key的operation,在一个连接内只操作这个key对应的value

      private RedisTemplate redisTemplate;

      ValueOperations valueOperations = redisTemplate.opsForValue();

        ValueOperations :简单字符串类型数据操作
        SetOperations :set类型数据操作
        ZSetOperations :zset类型数据操作
        HashOperations :map类型的数据操作
        ListOperations :list类型的数据操作

        opsForGeo:geo类型的数据操作,应用于地理位置计算

        opsForHyperLogLog:应用于独立信息统计

        opsForCluster:应用于集群

    --------------------------------------------------------------------------------------------------------------------------------------------

      BoundValueOperations boundValueOps = redisTemplate.boundValueOps("key");

        boundValueOps

        boundSetOps

        boundZSetOps

        boundHashOps

        boundListOps

        boundGeoOps

  • 相关阅读:
    气泡框箭头制作
    字体图标
    JQ 1.9 API在线资源
    JS获取屏幕,浏览器窗口大小,网页高度宽度(实现代码)_javascript技巧_
    canvas如何自适应屏幕大小
    System.Type.cs
    System.Security.Policy.EvidenceBase.cs
    System.Security.Policy.Evidence.cs
    System.Security.IEvidenceFactory.cs
    AIX-vi操作-提示Unknown terminal type的问题解决方法
  • 原文地址:https://www.cnblogs.com/roadlandscape/p/12386053.html
Copyright © 2011-2022 走看看