• springdata+redis配置详解


    springdata设计初衷是位简化数据类型和数据的持久化存储,它并不局限是关系型数据库还是nosql数据库,都提供了简化的数据库连接,让数据获取变得更加的简单。所有这些的实现有统一的api提供。

    本文主要设置spring-data-redis的相关配置特性:

    1.RedisTemplate:高度封装的,自动连接池管理类;

    2.对数据类型进行了归类,封装了操作接口类:

      a) ValueOperations:key-value操作

      b) setOperations:set的相关操作

      c) ZsetOperations:

      d) HashOperations:hash数据类型操作

      e) ListOperations:list数据类型操作

    3.对事务进行 封装,通过容器进行控制。

    4.序列化机制,提供各种序列化策略选择。

    集成配置详解:

      1.提供简单封装保存查询操作接口,以及实现类。

    1 public interface RedisCommand {
    2 
    3     public void save(String key,String value);
    4     
    5     public String get(String key);
    6     
    7     public <T> T getObject(String key,Class<T> clazz);
    8     
    9 }
    View Code
     1 @Service
     2 public class RedisHandle implements RedisCommand {
     3 
     4     @Autowired
     5     protected RedisTemplate<String, String> redisTemplate;
     6 
     7     @Override
     8     public void save(final String key, final String value) {
     9         redisTemplate.execute(new RedisCallback<Object>() {
    10             @Override
    11             public Object doInRedis(RedisConnection connection)
    12                     throws DataAccessException {
    13                 connection.set(
    14                         redisTemplate.getStringSerializer().serialize(
    15                                 "user.uid." + key), redisTemplate
    16                                 .getStringSerializer().serialize(value));
    17                 return null;
    18             }
    19         });
    20     }
    21 
    22     @Override
    23     public String get(final String key) {
    24         return redisTemplate.execute(new RedisCallback<String>() {
    25             @Override
    26             public String doInRedis(RedisConnection connection)
    27                     throws DataAccessException {
    28                 byte[] keys = redisTemplate.getStringSerializer().serialize(
    29                         "user.uid." + key);
    30                 if (connection.exists(keys)) {
    31                     byte[] value = connection.get(keys);
    32                     String name = redisTemplate.getStringSerializer()
    33                             .deserialize(value);
    34                     return name;
    35                 }
    36                 return null;
    37             }
    38         });
    39     }
    40 
    41     @Override
    42     public <T> T getObject(String key, Class<T> clazz) {
    43         // TODO Auto-generated method stub
    44         return null;
    45     }
    46 
    47 
    48 }
    View Code

      2.业务逻辑类

     1 @Service(value="userRedis")
     2 public class UserRedisImpl implements UserRedis{
     3 
     4     @Autowired
     5     protected RedisHandle handler;
     6 
     7     @Override
     8     public void saveUser(final User user) {
     9         handler.save(user.getId()+"", JSONObject.toJSONString(user));
    10     }
    11 
    12     @Override
    13     public User getUser(final long id) {
    14        String value =handler.get(id+"");
    15        User u= JSONObject.parseObject(value, User.class);
    16        return u;
    17     }
    18 }
    View Code

      3.测试类:

     1 public class TestUseRedis {
     2 
     3     @SuppressWarnings("resource")
     4     public static void main(String[] args) {
     5         ApplicationContext ac =  new ClassPathXmlApplicationContext("classpath:/spring-redis.xml");
     6         UserRedis userDAO = (UserRedis)ac.getBean("userRedis");
     7         System.out.println("userDao"+JSONObject.toJSONString(userDAO));
     8         User user1 = new User();
     9         user1.setId(4);
    10         user1.setName("oba2sssss220a");
    11         userDAO.saveUser(user1);
    12         User user2 = userDAO.getUser(2);
    13         System.out.println(user2.getName());
    14     }
    15 }
    View Code

      4.配置文件相关:

    spring-redis:

     1 <?xml version="1.0" encoding="UTF-8"?>  
     2 <beans xmlns="http://www.springframework.org/schema/beans"  
     3     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:p="http://www.springframework.org/schema/p"  
     4     xmlns:context="http://www.springframework.org/schema/context"  
     5     xmlns:jee="http://www.springframework.org/schema/jee" xmlns:tx="http://www.springframework.org/schema/tx"  
     6     xmlns:aop="http://www.springframework.org/schema/aop"  
     7     xsi:schemaLocation="  
     8             http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd  
     9             http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd">  
    10   
    11     <context:property-placeholder location="classpath:redis.properties" />  
    12     <context:component-scan base-package="com.hoo.report.web.service">
    13     </context:component-scan>
    14     <bean id="poolConfig" class="redis.clients.jedis.JedisPoolConfig">  
    15         <property name="maxIdle" value="${redis.maxIdle}" />  
    16         <property name="maxActive" value="${redis.maxActive}" />  
    17         <property name="maxWait" value="${redis.maxWait}" />  
    18         <property name="testOnBorrow" value="${redis.testOnBorrow}" />  
    19     </bean>  
    20       
    21     <bean id="connectionFactory" class="org.springframework.data.redis.connection.jedis.JedisConnectionFactory"  
    22         p:host-name="${redis.host}" p:port="${redis.port}" p:password="${redis.pass}"  p:pool-config-ref="poolConfig"/>  
    23       
    24     <bean id="redisTemplate" class="org.springframework.data.redis.core.StringRedisTemplate">  
    25         <property name="connectionFactory"   ref="connectionFactory" />  
    26     </bean>         
    27       
    28 </beans> 
    View Code

    pom引用:

     1 <!-- spring data -->
     2         <dependency>
     3             <groupId>org.springframework.data</groupId>
     4             <artifactId>spring-data-redis</artifactId>
     5             <version>1.0.2.RELEASE</version>
     6         </dependency>
     7 
     8         <dependency>
     9             <groupId>redis.clients</groupId>
    10             <artifactId>jedis</artifactId>
    11             <version>2.1.0</version>
    12         </dependency>
    View Code

    redis.properties:

    1 redis.host=127.0.0.1
    2 redis.port=6379
    3 redis.pass=
    4   
    5 redis.maxIdle=300
    6 redis.maxActive=600
    7 redis.maxWait=1000
    8 redis.testOnBorrow=true
    View Code

      

  • 相关阅读:
    scrapy中selenium的应用
    Django的锁和事务
    redis
    【leetcode】187. Repeated DNA Sequences
    【leetcode】688. Knight Probability in Chessboard
    【leetcode】576. Out of Boundary Paths
    【leetcode】947. Most Stones Removed with Same Row or Column
    【leetcode】948. Bag of Tokens
    【leetcode】946. Validate Stack Sequences
    【leetcode】945. Minimum Increment to Make Array Unique
  • 原文地址:https://www.cnblogs.com/huane/p/5890169.html
Copyright © 2020-2023  润新知