如何在Spring中配置Redis

redis作为如今比较火的分布式缓存数据库,可以大大减轻高并发时数据库的读写压力,最近初学了redis,写个笔记,以便记忆。
一、配置Redis参数
在spring中,编写properties文件
在这里插入图片描述
其中最重要的就是port端口号,以及hostname的IP地址。配置这些参数之前,需要创建Redis服务器,如果在本地,使用localhost,如果在云服务器,则使用该IP地址。
二、配置redis的XML文件
1、配置redis连接池属性
在这里插入图片描述
在配置前,需要将properties文件引入,使用
**<context:property-placeholder location=“classpath:redis.properties”/>**引入配置文件。
2、创建Redis连接池,并将上边的属性传入
在这里插入图片描述
这里需要创建JedisPoolWriper的工具类

public class JedisPoolWriper {
    /** Redis连接池对象   这里传入了一个Bean对象,设置了JedisPool对象的属性*/
    private JedisPool jedisPool;

//    JedisPoolConfig是Jedis的配置信息对象,初始化Jedis对象需要使用配置信息对象、Ip、以及端口号

    public JedisPoolWriper(final JedisPoolConfig poolConfig, final String host,
                           final int port) {
        try {
            jedisPool = new JedisPool(poolConfig, host, port);
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

    /**
     * 获取Redis连接池对象
     * @return
     */
    public JedisPool getJedisPool() {
        return jedisPool;
    }

    /**
     * 注入Redis连接池对象
     * @param jedisPool
     */
    public void setJedisPool(JedisPool jedisPool) {
        this.jedisPool = jedisPool;
    }

}

3、创建Redis工具类,对Redis的操作进行封装
Redis是Kye-Value类型的数据库,其中Value有五大类型,其中最基础的是String,它是以二进制文件格式进行存储,所以最大支持到512M
在这里插入图片描述
RedisUtil类代码

package com.imooc.o2o.cache;

import redis.clients.jedis.Jedis;
import redis.clients.jedis.JedisPool;
import redis.clients.util.SafeEncoder;

import java.util.Set;

public class JedisUtil {
    /** 操作Key的方法 */
    public Keys KEYS;
    /** 对存储结构为String类型的操作 */
    public Strings STRINGS;


    /** Redis连接池对象 */
    private JedisPool jedisPool;

    /**
     * 获取redis连接池
     *
     * @return
     */
    public JedisPool getJedisPool() {
        return jedisPool;
    }

    /**
     * 设置redis连接池,使用set方法的形式将JedisPool连接池对象传入
     *
     * @return
     */
    public void setJedisPool(JedisPoolWriper jedisPoolWriper) {
        this.jedisPool = jedisPoolWriper.getJedisPool();
    }

    /**
     * 从jedis连接池中获取获取jedis对象
     *
     * @return
     */
    public Jedis getJedis() {
        return jedisPool.getResource();
    }


    public class Keys {
        public Keys(JedisUtil jedisUtil) {

        }

        /**
         * 清空所有的Key
         * @return
         */
        public String flushAdd() {
            Jedis jedis = getJedis();
            String stata = jedis.flushAll();
            jedis.close();
            return stata;
        }

        /**
         * 删除keys对应的记录,可以是多个keys
         * @param keys
         * @return 删除的记录数
         */
        public long del(String... keys){
            Jedis jedis  = getJedis();
            long count = jedis.del(keys);
            jedis.close();
            return count;
        }

        /**
         *
         * @param key
         * @return 判断key是否存在
         */
        public boolean exists(String key){
            Jedis jedis = getJedis();
            boolean exis = jedis.exists(key);
            jedis.close();
            return exis;
        }

        /**
         * 查找所有匹配给定的模式的键
         * @param pattern
         * @return key的表达式,*表示多个,?表示一个
         */
        public Set<String> keys(String pattern){
            Jedis jedis = getJedis();
            Set<String> set = jedis.keys(pattern);
            jedis.close();
            return set;
        }
    }


    public class Strings {
        public Strings(JedisUtil jedisUtil) {

        }

        /**
         * 根据Key获取记录
         * @param key
         * @return
         */
        public String get(String key) {
            Jedis sjedis = getJedis();
            String value = sjedis.get(key);
            sjedis.close();
            return value;
        }

        /**
         * 添加记录,如果记录已经存在将覆盖原有的value
         * SafeEncoder.encode 系统自带的方法,可以将String转化成Byte数组
         * @param key
         * @param value
         * @return
         */
        public String set(String key,String value){
            return set(SafeEncoder.encode(key),SafeEncoder.encode(value));
        }

        /**
         * 添加记录,如果记录已经存在将覆盖原来的value
         * @param key
         * @param value
         * @return
         */
        public String set(byte[] key,byte[] value){
            Jedis jedis = getJedis();
            String status = jedis.set(key,value);
            jedis.close();
            return status;
        }
    }
}

总结,使用Redis分以下几步
配置RedisConfig—>实例化Redis连接池---->编写RedisUtil进行具体的操作。

猜你喜欢

转载自blog.csdn.net/MrSuper_cat/article/details/107021798