在ecplise中使用内存数据的客端户,前提要准备要下载两个jar包
commons-pool2-2.0.jar
jedis-2.4.2.jar
前提准备做好了,那我们就开启redis的服务,打开一个命令窗口输入如下命令:redis-server 或redis-server redis根目\redis.conf
服务器已经开启了,注意端号是6377
2.在eclipse 创建一个项目,把redist需要的包导入项目中
3.写一个Jedis工具类
public class JedisUtil {
private static String HOST="127.0.0.1"; //本机地址
private static Integer PORT=6379; //服务端口
private static JedisPoolConfig config; //连接池的配置对象
private static JedisPool pool; //连接池对象
static{
config = new JedisPoolConfig();
config.setMaxIdle(1024*10); //设置内存大小
pool = new JedisPool(config,HOST);
}
/**
*
* @return 从连接池里获取一个Jedis对象
*/
public static Jedis getPoolJedis(){
return pool.getResource();
}
/**
* 手动把Jedis对象,回放到连接池里
*/
public static void returnPoolJedis(Jedis jedis){
pool.returnResource(jedis);
}
/**
* @return 直接创建一个Jedis连接
*/
public static Jedis getJedis(){
return new Jedis(HOST, PORT);
}
}
4.写一个客户端类操作jedis
public class Client {
public static void main(String[] args) {
//simpleSet();
mSet();
}
private static void mSet() {
//注意 如果使用 JedisUtil.getJedis(); 是直接创建一个jredis对象,所以不受连接池管理,所以不能回放到连接池里
Jedis jedis = JedisUtil.getPoolJedis();
//设置值多个值
jedis.mset("userName","user1","pwd","123");
//取值
List<String> list = jedis.mget("userName","pwd");
for (String string : list) {
System.out.println(string);
}
jedis.flushDB();
JedisUtil.returnPoolJedis(jedis);
}
private static void simpleSet() {
Jedis jedis = JedisUtil.getPoolJedis();
//设置值
jedis.set("userName", "user1");
//取值
System.out.println("userName:"+jedis.get("userName"));
//清空内存数据库
jedis.flushDB();
JedisUtil.returnPoolJedis(jedis);
}
后补集合的简单操作
/** * hash 操作 */ private static void hashSet(){ Jedis jedis = JedisUtil.getPoolJedis(); //set,设置指定的哈希表里的某个域的值 jedis.hset("key1", "user1", "123"); jedis.hset("key2", "user2", "456"); jedis.hset("key3", "user3", "789"); //get,取出指定哈希表里的某个域的值 System.out.println(jedis.hget("key1", "user1")); } /** * hash map操作 */ public static void mapSet(){ Jedis jedis = JedisUtil.getPoolJedis(); Map<String,String> map=new HashMap<String,String>(); map.put("user1", "123"); map.put("user2", "456"); map.put("user3", "789"); //将一个map集合的键/值,设置到哈希表里。 jedis.hmset("map", map); //取出哈希表域的值,也就map的key //System.out.println(jedis.hmget("map", "user3")); //取出哈希表多个域的值 List<String> list = jedis.hmget("map", "user1","user2","user3"); for (String string : list) { System.out.println("值:"+string); } } /** * 返回哈希表key中,所有的域与值 */ public static void getAll(){ Jedis jedis = JedisUtil.getPoolJedis(); Map<String,String> map = jedis.hgetAll("map"); Set<String> keySet = map.keySet(); Iterator<String> i = keySet.iterator(); while(i.hasNext()){ System.out.println(map.get(i.next())); } //jedis.del(key) key field [field ...]删除哈希表key中的一个或多个指定域。 //jedis.hlen(key) key 返回哈希表key中域的数量。 //jedis.hexists(key, field) key field查看哈希表key中,给定域field是否存在。 //jedis.hincrByFloat(key, field, increment) key field increment为哈希表key中的域field的值加上增量increment。 //jedis.hkeys(key) key返回哈希表key中的所有域。 //jedis.hvals(key) key返回哈希表key中的所有值。 } /** * list操作 */ public static void list(){ Jedis jedis = JedisUtil.getPoolJedis(); //设置值,是以栈的存储方式,先进后出。jedis.lpush(key, strings) strings可以是设置多个值。 jedis.lpush("list","index1"); jedis.lpush("list","index2"); jedis.lpush("list","index3"); //取值,根据开始下标与结束下标的范围取值 List<String> list = jedis.lrange("list", 0,2); for (int i = 0; i < list.size(); i++) { System.out.println(list.get(i)); } //jedis.llen(key) key 返回列表key的长度 //jedis.lrem(key, count, value) 根据参数count的值,移除列表中与参数value相等的值 } /** * set操作 */ public static void set(){ Jedis jedis = JedisUtil.getPoolJedis(); //设置值 jedis.sadd("set", "s1","s2","s3","s4"); //移除某个元素,可以移出一个,也可以移出多个。 jedis.srem("set", "s1","s2"); //获出所有的元素 Set<String> set = jedis.smembers("set"); Iterator<String> i = set.iterator(); while(i.hasNext()) System.out.println(i.next()); }
}
现在可以在redist客户端对数据进行取值
打开一个命令窗口,输入命令 redis-cli 开启客户端,原后进行赋值