zoukankan      html  css  js  c++  java
  • redis(二)----基本操作

    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. 程序结构目录

    QQ截图20160317135618

    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
    笔者只是初学者,开此博客的初衷是为了给自己的学习过程留一个痕迹。所以您可能发现笔者措辞不严谨、逻辑不合理,甚至代码有错误、结论很偏颇等等。笔者感激各位的讨论和指正,并在此不胜感激!拜谢!欢迎加QQ群讨论:852410026
  • 相关阅读:
    仿当当网鼠标经过图片翻转
    静态随鼠标移动的Tip
    Weblogic免项目名
    weblogic中文乱码问题
    IE6下的{clear:both}出现怪异的空白
    动态随鼠标移动的Tip
    base标签在ie6下的恶心问题
    javascript中for和for in 区别
    jQuery性能优化<<转>>
    Ant项目打包脚本
  • 原文地址:https://www.cnblogs.com/LOVE0612/p/5287783.html
Copyright © 2011-2022 走看看