SpringDataRedis

SpringDataRedis

NOSQL:非关系型数据库

Java代码操作mysql使用jdbc  —- mybatis

Java代码操作redis使用jedis  —- springDataRedis

SpringDataRedis的使用

官网:https://spring.io/projects/spring-data

<!--pom.xml-->
<dependencies>
   <dependency>
       <groupId>org.springframework</groupId>
       <artifactId>spring-context</artifactId>
       <version>4.2.4.RELEASE</version>
   </dependency>
   <dependency>
       <groupId>redis.clients</groupId>
       <artifactId>jedis</artifactId>
       <version>2.8.2</version>
   </dependency>
   <dependency>
       <groupId>org.springframework.data</groupId>
       <artifactId>spring-data-redis</artifactId>
       <version>1.7.2.RELEASE</version>
   </dependency>
   <dependency>
       <groupId>junit</groupId>
       <artifactId>junit</artifactId>
       <version>4.12</version>
   </dependency>
</dependencies>
<dependency>
   <groupId>org.springframework</groupId>
   <artifactId>spring-test</artifactId>
   <version>4.2.4.RELEASE</version>
</dependency>
<!--redis-config.properties-->
redis.host=192.168.25.128
redis.port=6379
redis.pass=
redis.database=0
redis.maxIdle=300
redis.maxWait=3000
redis.testOnBorrow=true
<!--applicationContext-redis.xml-->
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:p="http://www.springframework.org/schema/p"
  xmlns:context="http://www.springframework.org/schema/context"
  xmlns:dubbo="http://code.alibabatech.com/schema/dubbo" xmlns:mvc="http://www.springframework.org/schema/mvc"
  xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
       http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc.xsd
       http://code.alibabatech.com/schema/dubbo http://code.alibabatech.com/schema/dubbo/dubbo.xsd
       http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd">
  <context:property-placeholder location="classpath*:config/*.properties" />
  <!-- redis 相关配置 -->
  <bean id="poolConfig" class="redis.clients.jedis.JedisPoolConfig">  
    <property name="maxIdle" value="${redis.maxIdle}" />  
    <property name="maxWaitMillis" value="${redis.maxWait}" />  
    <property name="testOnBorrow" value="${redis.testOnBorrow}" />  
  </bean>  
  <bean id="JedisConnectionFactory"
 class="org.springframework.data.redis.connection.jedis.JedisConnectionFactory"
      p:host-name="${redis.host}"
      p:port="${redis.port}"
      p:password="${redis.pass}"
      p:pool-config-ref="poolConfig"/>  
 
  <bean id="redisTemplate" class="org.springframework.data.redis.core.RedisTemplate">  
    <property name="connectionFactory" ref="JedisConnectionFactory" />  
  </bean>  
</beans>

Redis能存储的数据类型:

Value:基础数据类型
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(locations = "classpath:applicationContext-redis.xml")
public class ValueTest {

   @Autowired
   private RedisTemplate redisTemplate;

   @Test
   public void testAdd(){
//        redisTemplate.boundValueOps("value_key").set("zhangsan");
       redisTemplate.boundValueOps("value_key").set("zhangsan",30, TimeUnit.SECONDS);
//        void set(V value, long timeout, TimeUnit unit);
   }

   @Test
   public void testGet(){
       Object value_key = redisTemplate.boundValueOps("value_key").get();
       System.out.println(value_key);
   }

   @Test
   public void testDele(){
       redisTemplate.delete("value_key");
   }

}
List:集合 有序  可重复
@Test
   public void testAdd(){
//        redisTemplate.boundListOps("list_key").rightPush("zhangsan");
//        redisTemplate.boundListOps("list_key").rightPush("lisi");
//        redisTemplate.boundListOps("list_key").rightPush("wangwu");
//        redisTemplate.boundListOps("list_key").rightPush("zhaoliu");
//        zhangsan  lisi  wangwu  zhaoliu

       redisTemplate.boundListOps("list_key").leftPush("zhangsan");
       redisTemplate.boundListOps("list_key").leftPush("lisi");
       redisTemplate.boundListOps("list_key").leftPush("wangwu");
       redisTemplate.boundListOps("list_key").leftPush("zhaoliu");
//        zhaoliu  wangwu lisi zhangsan
   }

   @Test
   public void testGet(){
       List list_key = redisTemplate.boundListOps("list_key").range(0, 10);
       for (Object o : list_key) {
           System.out.println(o);
       }
   }

   @Test
   public void testDele(){
//        redisTemplate.delete("list_key");
       redisTemplate.boundListOps("list_key").remove(1,"lisi");
   }
Set:集合 无序 不可重复
@Test
   public void testAdd(){

       redisTemplate.boundSetOps("set_key").add("zhangsan");
       redisTemplate.boundSetOps("set_key").add("lisi");
       redisTemplate.boundSetOps("set_key").add("wangwu");
       redisTemplate.boundSetOps("set_key").add("zhaoliu");
//        zhaoliu  wangwu lisi zhangsan
   }

   @Test
   public void testGet(){
       Set list_key = redisTemplate.boundSetOps("set_key").members();
       for (Object o : list_key) {
           System.out.println(o);
       }
   }

   @Test
   public void testDele(){
//        redisTemplate.delete("set_key");
       redisTemplate.boundSetOps("set_key").remove("lisi");
   }
Hash:map
@Test
   public void testAdd(){

       redisTemplate.boundHashOps("hash_key").put("a","AAAAA");
       redisTemplate.boundHashOps("hash_key").put("b","BBBBB");
       redisTemplate.boundHashOps("hash_key").put("c","CCCCC");
       redisTemplate.boundHashOps("hash_key").put("d","DDDDD");
//        zhaoliu  wangwu lisi zhangsan
   }

   @Test
   public void testGet(){
       Set list_key = redisTemplate.boundHashOps("hash_key").keys();
       for (Object o : list_key) {
           System.out.println(o);
           Object hash_key = redisTemplate.boundHashOps("hash_key").get(o);
           System.out.println(hash_key);
       }
   }

   @Test
   public void testDele(){
//        redisTemplate.delete("hash_key");
       redisTemplate.boundHashOps("hash_key").delete("c");
   }
Zset:集合 有序  用的少 不举例了

// 使用DEMO
@Override
public List<TbContent> findByCategotyId(Long cid) {
   // 先从Redis里面查
   List<TbContent> countList = (List<TbContent>) redisTemplate.boundHashOps("countList").get(cid);
   if (countList == null) {
       // 从数据库查
       countList = contentMapper.findByCategotyId(cid); // todo  注意这里接受的对象还是contentList
       // 查完后存到Redis
       redisTemplate.boundHashOps("countList").put(cid, countList);
       System.out.println("数据来自Redis");
   }

   System.out.println("数据来自MYSql");
   return countList;
}

发表评论