zoukankan      html  css  js  c++  java
  • redis 缓存

    本篇博客只介绍 redis 作为缓存的的一些使用,以及在项目中如何把redis和spring如何集成。

    1:redis的maven依赖,redis 依赖   spring-redis 依赖;

    <dependency>
        <groupId>redis.clients</groupId>
        <artifactId>jedis</artifactId>
        <version>${redis.version}</version>
    </dependency>
    
         <dependency>
             <groupId>org.springframework.data</groupId>
             <artifactId>spring-data-redis</artifactId>
             <version>${spring.redis.version}</version>
         </dependency>

    2:redis 配置  整合spring的配置

    <bean id="jedisPoolConfig" class="redis.clients.jedis.JedisPoolConfig">   
            <property name="maxIdle" value="1" />
            <property name="maxTotal" value="5" />
            <property name="blockWhenExhausted" value="true" />
            <property name="maxWaitMillis" value="30000" />
            <property name="testOnBorrow" value="true" />
        </bean>
    
    
        <bean id="jedisConnectionFactory" class="org.springframework.data.redis.connection.jedis.JedisConnectionFactory">
            <property name="hostName" value="localhost" />
            <property name="port" value="6379"/>
            <property name="poolConfig" ref="jedisPoolConfig" />
            <property name="usePool" value="true"/>
        </bean>
    
        <bean id="redisTemplate" class="org.springframework.data.redis.core.RedisTemplate">
            <property name="connectionFactory"   ref="jedisConnectionFactory" />
            <property name="keySerializer">
                <bean class="org.springframework.data.redis.serializer.StringRedisSerializer" />
            </property>
            <property name="valueSerializer">
                <bean class="org.springframework.data.redis.serializer.JdkSerializationRedisSerializer" />
            </property>
            <property name="hashKeySerializer">
                <bean class="org.springframework.data.redis.serializer.StringRedisSerializer"/>
            </property>
            <property name="hashValueSerializer">
                <bean class="org.springframework.data.redis.serializer.JdkSerializationRedisSerializer"/>
            </property>
        </bean>

    接下来就可以在项目中使用redis了,这里使用的是spring的redisTemplate,只需要在项目中注入 redisTemplate 就可以直接使用了。

    以下为使用redisTemplate来操作redis;

    1:redis 中自增的操作:这种自增是原子性的,可以用在高并发的场景,如 库存的秒杀

    
    
    ApplicationContext ctx = new ClassPathXmlApplicationContext("spring-redis.xml");
    RedisTemplate redisTemplate = (RedisTemplate) ctx.getBean("redisTemplate");
    // redis 自增
    Long beppe = redisTemplate.opsForValue().increment("beppe", 2);
    System.out.println(beppe);
    
    

    2:String 类型的操作

    //        String 类型
            ValueOperations valueOpe = redisTemplate.opsForValue();
            valueOpe.set("user:name","哈哈哈");
            String userName = (String)valueOpe.get("user:name");
            System.out.println(userName);

    3:list操作;

    //        List 类型  list是不去重存储
            ListOperations listOps = redisTemplate.opsForList();
            listOps.leftPush("user:redis","beppe1");
            listOps.leftPush("user:redis","beppe2");
            listOps.leftPush("user:redis","beppe3");
            List list = listOps.range("user:redis", 0, -1);  //这里 0,-1 表示获取 list 所有内容
    //        String o = (String)listOps.leftPop("user:redis");
            System.out.println(list);
    

    4:Hash 操作;

    //        hash 类型   有两种操作形式 1:put 一个元素一个元素添加   putAll 一次性添加一个Map
            HashOperations opHash = redisTemplate.opsForHash();
    //        opHash.put("mykey1","city1","shanghai");
    //        opHash.put("mykey2","city2","beijing");
            HashMap<String, String> map = new HashMap<>();
            map.put("city1","shanghai1");
            map.put("city2","shanghai2");
            map.put("city3","shanghai3");
            map.put("city4","shanghai4");
            opHash.putAll("citya:redis",map);
            Map entries = opHash.entries("citya:redis");
            System.out.println(entries);

    5:set类型操作;

    //        set类型
            SetOperations setOper = redisTemplate.opsForSet();
            Set<String> set = new HashSet<String>();
            set.add("beppe1");
            set.add("beppe2");
            set.add("beppe2");
            set.add("beppe3");
            setOper.add("set:redis",set);
            Set<String> pop = (Set<String>)setOper.pop("set:redis");
            for (String str:
                 pop) {
                System.out.println(str);
            }

    以上几种就是redis存储数据的几种数据结构的操作;

    下篇博客会 介绍使用 redis 来实现发布订阅的功能;

  • 相关阅读:
    RFID学习
    [从jQuery看JavaScript]-变量与作用域链
    Javascript中最常用的61个经典技巧[转]
    再读《被神化的框架》
    jquery动态分页
    如果你不知道这11款常见的Web应用程序框架 就说明你out了
    [从jQuery看JavaScript]-匿名函数与闭包
    [从jQuery看JavaScript]-注释(comments)
    周末大礼:jQuery技巧总结
    jQuery Form插件详解
  • 原文地址:https://www.cnblogs.com/beppezhang/p/7919139.html
Copyright © 2011-2022 走看看