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进行具体的操作。