1. redis介绍
redis是一个key-value存储系统。和Memcached类似,它支持存储的value类型相对更多,包括string(字符串)、list(链表)、set(集合)、zset(sorted set --有序集合)和hash(哈希类型)
2. jar包准备
JAVA操作redis基本包:http://mvnrepository.com/artifact/redis.clients/jedis。
如果需要使用redis连接池,还需要下载common-pool包:http://commons.apache.org/proper/commons-pool/download_pool.cgi
3. 程序结构目录
4. 测试源码
package com.redis;import java.util.HashMap; import java.util.Map; import java.util.Set; import redis.clients.jedis.Jedis;public class MyRedis {private Jedis jedis;public void setup(){jedis = new Jedis("127.0.0.1", 6379);}public void inst(){jedis.close();}//清除所有数据public void clear(){Set<String> set = jedis.keys("*");for (String key : set) {jedis.del(key); //删除 }}//现实所有键名和类型public void show(){Set<String> set = jedis.keys("*");System.out.println("当前共用"+set.size()+"个数据,分别为:");for (String key : set) {System.out.println(key+"类型为"+jedis.type(key));}}//redis处理字符串public void testString(){jedis.set("String", "LYC"); //添加数据System.out.println(jedis.get("String"));jedis.append("String", " LOVE BYQ"); //拼接字符串System.out.println(jedis.get("String"));jedis.mset("userName", "LYC", "passWord", "-+", "age", "28"); //添加多条System.out.println("userName:"+jedis.get("userName"));System.out.println("passWord:"+jedis.get("passWord"));System.out.println("age:"+jedis.get("age"));jedis.incr("age"); //加一System.out.println("age:"+jedis.get("age"));jedis.incrBy("age", 2); //加二System.out.println("age:"+jedis.get("age"));jedis.incrByFloat("age", 3.5f);System.out.println("age:"+jedis.get("age"));}//redis处理Mappublic void testMap(){Map<String, String> map = new HashMap<String, String>();map.put("userName", "LYC");map.put("passWord", "-+");map.put("age", "28");jedis.hmset("user1", map); //添加map数据System.out.println(jedis.hmget("user1", "userName", "passWord", "age")); //注意hmget返回的是List<String>jedis.hdel("user1", "passWord"); //删除map中的某个键值System.out.println(jedis.hmget("user1", "userName", "passWord", "age")); //注意hmget返回的是List<String>jedis.hset("user1", "passWord", "*#");System.out.println(jedis.hmget("user1", "userName", "passWord", "age")); //注意hmget返回的是List<String>System.out.println(jedis.hlen("user1")); //返回key为user1的键中存放的值的个数System.out.println(jedis.exists("user1"));//是否存在key为user1的记录System.out.println(jedis.hkeys("user1"));//返回map对象中的所有key System.out.println(jedis.hvals("user1"));//返回map对象中的所有value }//redis处理Listpublic void testList(){jedis.lpush("userList1", "张三"); //添加List数据jedis.lpush("userList1", "李四"); //添加List数据jedis.lpush("userList1", "王五"); //添加List数据//读取List数据。第一个是key;第二个是起始位置;第三个是结束位置, -1表示取得所有。 System.out.println(jedis.lrange("userList1", 0, -1)); // jedis.rpush("userList2", "张三"); //添加List数据jedis.rpush("userList2", "李四"); //添加List数据jedis.rpush("userList2", "王五"); //添加List数据System.out.println(jedis.lrange("userList2", 0, -1));jedis.rpush("sort", "2"); //添加List数据jedis.rpush("sort", "3"); //添加List数据jedis.rpush("sort", "1"); //添加List数据System.out.println(jedis.lrange("sort", 0, -1));jedis.sort("sort"); //排序System.out.println(jedis.lrange("sort", 0, -1));}//redis处理集合public void testSet(){jedis.sadd("userSet", "张三"); //添加set数据jedis.sadd("userSet", "李四"); //添加set数据jedis.sadd("userSet", "王五"); //添加set数据jedis.sadd("userSet", "某人"); //添加set数据System.out.println(jedis.smembers("userSet"));jedis.srem("userSet", "某人");System.out.println(jedis.smembers("userSet"));System.out.println(jedis.sismember("userSet", "赵六")); //判断 赵六 是否是userSet集合的元素 System.out.println(jedis.srandmember("userSet")); //随机获取集合中一个元素System.out.println(jedis.srandmember("userSet")); //随机获取集合中一个元素System.out.println(jedis.srandmember("userSet")); //随机获取集合中一个元素System.out.println(jedis.scard("userSet"));} }
package com.redis;public class TestMain {public static void main(String[] args) {MyRedis myRedis = new MyRedis();myRedis.setup();myRedis.clear();myRedis.show();System.out.println("------------testString------------");myRedis.testString();System.out.println("------------testMap------------");myRedis.testMap();System.out.println("------------testList------------");myRedis.testList();System.out.println("------------testSet------------");myRedis.testSet();System.out.println("------------Over------------");myRedis.show();myRedis.clear();myRedis.inst();} }
打印结果为:
当前共用0个数据,分别为: ------------testString------------ LYC LYC LOVE BYQ userName:LYC passWord:-+ age:28 age:29 age:31 age:34.5 ------------testMap------------ [LYC, -+, 28] [LYC, null, 28] [LYC, *#, 28] 3 true [passWord, userName, age] [LYC, 28, *#] ------------testList------------ [王五, 李四, 张三] [张三, 李四, 王五] [2, 3, 1] [2, 3, 1] ------------testSet------------ [某人, 王五, 李四, 张三] [王五, 李四, 张三] false 李四 张三 张三 3 ------------Over------------ 当前共用9个数据,分别为: sort类型为list userSet类型为set String类型为string age类型为string user1类型为hash userList1类型为list userName类型为string userList2类型为list passWord类型为string