声明:本文的Redis操作部分参考了 edisonfeng的java对redis的基本操作
1.准备工作
1)在Linux虚拟机中安装好Redis,关闭防火墙,并且在redis配置文件CONF中的设置好bind 127.0.0.1 192.168.6.128
192.168.6.128是虚拟机中CentOS的IP地址。
2)在java项目中,引用 jedis-2.1.0.jar 和 commons-pool-1.5.5.jar ,fastjson-1.2.2.jar
2.项目目录结构
3.代码
User是自定义的类,要保存到redis中。java保存对象到redis有两种方法,一是序列化,二是通过JSON转成字符串。
本例子用的是JSON转成字符串,通过阿里的fastjson-1.2.2.jar进行转化。
package com.redis;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
import java.util.Set;
import com.alibaba.fastjson.JSON;
import redis.clients.jedis.Jedis;
import redis.clients.jedis.JedisPool;
import redis.clients.jedis.JedisPoolConfig;
import redis.clients.jedis.JedisShardInfo;
import redis.clients.jedis.ShardedJedis;
import redis.clients.jedis.ShardedJedisPool;
import redis.clients.jedis.SortingParams;
public class RedisClient {
private Jedis jedis;//非切片额客户端连接
private JedisPool jedisPool;//非切片连接池
private ShardedJedis shardedJedis;//切片额客户端连接
private ShardedJedisPool shardedJedisPool;//切片连接池
public RedisClient()
{
initialPool();
initialShardedPool();
shardedJedis = shardedJedisPool.getResource();
jedis = jedisPool.getResource();
}
/**
* 初始化非切片池
*/
private void initialPool()
{
// 池基本配置
JedisPoolConfig config = new JedisPoolConfig();
config.setMaxActive(20);
config.setMaxIdle(5);
config.setMaxWait(1000l);
config.setTestOnBorrow(false);
jedisPool = new JedisPool(config,"192.168.6.128",6379);
}
/**
* 初始化切片池
*/
private void initialShardedPool()
{
// 池基本配置
JedisPoolConfig config = new JedisPoolConfig();
config.setMaxActive(20);
config.setMaxIdle(5);
config.setMaxWait(1000l);
config.setTestOnBorrow(false);
// slave链接
List<JedisShardInfo> shards = new ArrayList<JedisShardInfo>();
shards.add(new JedisShardInfo("192.168.6.128", 6379, "master"));
// 构造池
shardedJedisPool = new ShardedJedisPool(config, shards);
}
public void show() {
ObjectOperate() ;
KeyOperate();
StringOperate();
//ListOperate();
//SetOperate();
//SortedSetOperate();
//HashOperate();
jedisPool.returnResource(jedis);
shardedJedisPool.returnResource(shardedJedis);
}
private void ObjectOperate()
{
User user = new User(2,"test","test");
String userStr = JSON.toJSONString(user);
System.out.println(JSON.toJSONString(user));
jedis.set("test",JSON.toJSONString(user));
}
private void KeyOperate()
{
System.out.println("======================key==========================");
// 清空数据
System.out.println("清空库中所有数据:"+jedis.flushDB());
// 判断key否存在
System.out.println("判断key999键是否存在:"+shardedJedis.exists("key999"));
System.out.println("新增key001,value001键值对:"+shardedJedis.set("key001", "value001"));
System.out.println("判断key001是否存在:"+shardedJedis.exists("key001"));
// 输出系统中所有的key
System.out.println("新增key002,value002键值对:"+shardedJedis.set("key002", "value002"));
System.out.pri