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处理Map public 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处理List public 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