redis的基本命令整理

来源:互联网 发布:java工作两年工资 编辑:程序博客网 时间:2024/05/12 13:47
redis 的五大基本类型的简单命令

对key--value中的value的一些简单命令

    keys * 查询redis中的所有key
    exists key 查询key是否存在
    flushdb 清空当前库
    flushall 清空所有库 总共16个库,默认0号库
    select(库号0-15)选择库
    dbsize 返回当前库中有多少key
    randomkey 随机返回一个key
    ttl 获得一个key还剩下多少时间
    expire 设置一个key的有效时间
    move(key,dbindex) 把当前key转移到制定库
    del key删除一个key
    type key[hhy]      返回当前key的类型【五种】
    rename[了解]

  


持久化

  • save:将数据同步保存到磁盘
  • bgsave:将数据异步保存到磁盘
  • lastsave:返回上次成功将数据保存到磁盘的Unix时戳
  • shundown:将数据同步保存到磁盘,然后关闭服务


远程服务控制

  • info:提供服务器的信息和统计
  • monitor:实时转储收到的请求
  • slaveof:改变复制策略设置
  • config:在运行时配置Redis服务器




对String操作的命令

  • set(key, value):给数据库中名称为key的string赋予值value
  • get(key):返回数据库中名称为key的string的value
  • getset(key, value):给名称为key的string赋予上一次的value
  • mget(key1, key2,…, key N):返回库中多个string的value
  • setnx(key, value):添加string,名称为key,值为value
  • setex(key, time, value):向库中添加string,设定过期时间time
  • mset(key N, value N):批量设置多个string的值
  • msetnx(key N, value N):如果所有名称为key i的string都不存在
  • incr(key):名称为key的string增1操作
  • incrby(key, integer):名称为key的string增加integer
  • decr(key):名称为key的string减1操作
  • decrby(key, integer):名称为key的string减少integer
  • append(key, value):名称为key的string的值附加value
  • substr(key, start, end):返回名称为key的string的value的子串


对List操作的命令

  • rpush(key, value):在名称为key的list尾添加一个值为value的元素
  • lpush(key, value):在名称为key的list头添加一个值为value的 元素
  • llen(key):返回名称为key的list的长度
  • lrange(key, start, end):返回名称为key的list中start至end之间的元素
  • ltrim(key, start, end):截取名称为key的list
  • lindex(key, index):返回名称为key的list中index位置的元素
  • lset(key, index, value):给名称为key的list中index位置的元素赋值
  • lrem(key, count, value):删除count个key的list中值为value的元素
  • lpop(key):返回并删除名称为key的list中的首元素
  • rpop(key):返回并删除名称为key的list中的尾元素
  • blpop(key1, key2,… key N, timeout):lpop命令的block版本。
  • brpop(key1, key2,… key N, timeout):rpop的block版本。
  • rpoplpush(srckey, dstkey):返回并删除名称为srckey的list的尾元素,并将该元素添加到名称为dstkey的list的头部


对Set操作的命令

  • sadd(key, member):向名称为key的set中添加元素member
  • srem(key, member) :删除名称为key的set中的元素member
  • spop(key) :随机返回并删除名称为key的set中一个元素
  • smove(srckey, dstkey, member) :移到集合元素
  • scard(key) :返回名称为key的set的基数
  • sismember(key, member) :member是否是名称为key的set的元素
  • sinter(key1, key2,…key N) :求交集
  • sinterstore(dstkey, (keys)) :求交集并将交集保存到dstkey的集合
  • sunion(key1, (keys)) :求并集
  • sunionstore(dstkey, (keys)) :求并集并将并集保存到dstkey的集合
  • sdiff(key1, (keys)) :求差集
  • sdiffstore(dstkey, (keys)) :求差集并将差集保存到dstkey的集合
  • smembers(key) :返回名称为key的set的所有元素
  • srandmember(key) :随机返回名称为key的set的一个元素

 

Sorted-sort【zset】集合  

 

     zset 是sets 一个升级 ,是有序集合,这一属性在添加修改元素的时候可以指定,
    每次指定后,zset 会自动冲洗按心的值调整顺序,可以理解为两列的mysql表
    一两存value,一列存顺序,key理解为zset名字
    zadd 向集合中添加一个元素 如果值存在则更新顺序号
    zadd myset 1 one
    zadd myset 2 two
    zadd myset 3 three

    2 zrange
    zrange myset 0 -1 withscores withscores显示 顺序号

    3 zrem 删除一个元素
    zrem myset two

    4 zincrby 对序号进行增加
     zincrby myset 3 one 顺序号增加3个
       zincrby myset -3 one 顺序号减少3个

    5 zrank 按照索引排序 ,返回索引值

    zrank myset one

    6 zrevrank 返回名称为key 的zset 中member 元素的排名
      (按照score从大到小的排序)即下标
      zrevrank myset two

    7 zrevrange 降序排序


    8 zrangebyscore
    

    zrangebyscore myset 2 3 withscores
    这里的2 和3 是顺序 不是inex

    9 zcount
    返回score在给定区间的数量
    zcount myset 2 4

    10 zcard 返回所有元素个数
    zcard myset

    11 zremrangebyrank 删除集合中排名在给定区间的元素
    按照索引删除
    zremrangebyrank myset 1 1
    1 代表索引

    12 zremrangebyscore 按照顺序删除

    zremrangebyscore myset 2 5

 

对Hash操作的命令(

Hash是一种数据结构,一般翻译做“散列”,也有直接音译为“哈希”。Redis hash 是一个string类型的field和value的映射表。它特别适合用于存储对象。同将对象的每个字段存成单个string类型,存储为hash类型会占用更少的内存,并且方便的存取整个对象。

  • hset(key, field, value):向名称为key的hash中添加元素field
  • hget(key, field):返回名称为key的hash中field对应的value
  • hmget(key, (fields)):返回名称为key的hash中field i对应的value
  • hmset(key, (fields)):向名称为key的hash中添加元素field 
  • hincrby(key, field, integer):将名称为key的hash中field的value增加integer
  • hexists(key, field):名称为key的hash中是否存在键为field的域
  • hdel(key, field):删除名称为key的hash中键为field的域
  • hlen(key):返回名称为key的hash中元素个数
  • hkeys(key):返回名称为key的hash中所有键
  • hvals(key):返回名称为key的hash中所有键对应的value
  • hgetall(key):返回名称为key的hash中所有的键(field)及其对应的value

 

 

代码实例:redis的CURD操作

 

  1 package deifeng.testRedis;  2   3 import java.util.HashMap;  4 import java.util.List;  5 import java.util.Set;  6   7 import org.junit.Test;  8   9 import redis.clients.jedis.BinaryClient.LIST_POSITION; 10 import redis.clients.jedis.Jedis; 11 import redis.clients.jedis.Tuple; 12  13 /** 14  *  15  * @author Administrator 16  * timer:2017年2月18日下午11:02:24 17  * intro:TODO 18  */ 19 public class TestCRUD { 20     //创建redis 的客户端连接,绑定主机和端口号 21     private static String host="127.0.0.1"; 22     private static int port =6379; 23     private Jedis jedis = TestCRUD.getRedisUtil(host, port); 24      25      26      27     //测试连接 28     public void  testConn(){ 29         System.out.println(jedis); 30     } 31      32     /** 33      * 测试redis的五大基本类型操作 34      */ 35     /** 36      * String 类型的简单命令 37      *  38      *    一 -------多 39      *    set      mset 40      */ 41     @Test 42     public  void testString(){ 43         //获取jedis对象    返回key=hhy2的type类型 44         /*String type = jedis.type("hhy2"); 45         System.out.println(type);*/ 46         /** 47          * 存储一个数据 48          *  49          * set   -------mset 50          */ 51         //jedis.flushDB();       flushAll 52         String key1 = jedis.set("hhy", "hhy");  53         System.out.println(jedis.get("hhy")); 54         //是在key不存在,才会执行set操作,如果key存在,则此操作无效,返回值1代表成功,0代表失败 55         //setnx  ------msetnx 56         Long setnx = jedis.setnx("hhy1", "zs"); 57         System.out.println(setnx);//1   代表插入的key在redis库中不存在 58         //setex  ---- mstex 59         jedis.setex("hhy", 100, "zsq");//100有效期    60          61         Long tt = jedis.ttl("hhy"); 62         System.out.println(tt); 63         /** 64          * 存储多个数据 65          * mget  key1 value1  key2 value2... 66          * 类似于set对一个数据存储的语法 67          */ 68          69          70         /** 71          * getrange 72          * getrange key star end 73          * 74          *    解释:获取存储在key中value的字串。字符串的截取有star和end决定,字符串的第一个字符编号是0,第二个是1, 75          *    一次类推;如果是负数,-1是最后一个字符,-2是倒数第二个字符,一次类推。 76          * 77          *    setrange 78          *  用value重写key值的一部分,偏移量由offset指定 79          *   80          */ 81          82         jedis.set("test", "test123456"); 83         System.out.println(jedis.getrange("test", 2, 5)); 84          85          86         /** 87          * getset 88          */ 89         String getset = jedis.getSet("hhy", "123"); 90         System.out.println(getset); 91          92         Long ll = jedis.append("hhy", "123");//添加以后的长度 93          94          95         /** 96          * 递增/减 97          * incr / incrby   ++   /  decr  /decrby  -- 98          */ 99         Long incr = jedis.incr("21");100         System.out.println(incr);101         102         /**103          * 删除key104          * del105          */106         jedis.del("hhy");107         System.out.println("=====================");108         Set<String> keys = jedis.keys("*");109         for (String string : keys) {110             System.out.println(string +"---->"+jedis.get(string));111         }112         113     }114     115     116     117     /**118      * redis  ---- List119      * lpush  rpush  linsert  添加命令120      * lpop   rpop            删除命令121      * lrange llen   lindex   查询命令122      * lset                   修改命令123      * rpoplpush              两个列表A,B,将A列表的尾元素添加到B列表的头元素中124      */125     @Test126     public void testList(){127         jedis.flushDB();//清空当前库128         //添加一个list集合129         /**130          * 如果保证顺序131          * left  降序132          * right  顺序133          */134         jedis.lpush("zs", "3","2","1");//左侧插入一个list集合135         jedis.rpush("li", "7","8","9");136         /*137         //遍历li集合138         List<String> list = jedis.lrange("li", 0, -1);139         for (String str : list) {140             System.out.println(str);141         }142         143         System.out.println("============");144         //linsert插入一条数据145         jedis.linsert("zs", LIST_POSITION.AFTER, "2", "12");146         //遍历li集合147         List<String> zs = jedis.lrange("zs", 0, -1);148         for (String str : zs) {149             System.out.println(str);150         }151         152         //del153         *//**154          * lpop  rpop  分别代表是从左|右侧删除一条数据155          * 并且把删除的数据值返回过来156          *//*157         System.out.println(jedis.lpop("zs"));158         159         160         *//**161          * 查询命令  lindex  llen162          *//*163         164         System.out.println(jedis.lindex("li", 1));165         System.out.println(jedis.lset("zs", 0, "hhy"));166         167         */168         jedis.rpoplpush("li", "zs");169         System.out.println("--------------");170         List<String> zs1 = jedis.lrange("zs", 0, -1);171         for (String string : zs1) {172             System.out.println(string);173         }174     }175     176     177     178     /**179      * Redis   --   Set180      */181     @Test182     public void testSet(){183         jedis.flushDB();184         jedis.sadd("ss", "1","2","3");185         System.out.println(jedis.smembers("ss"));186         //在客户端命令中。存在是1  不存在是0187         System.out.println(jedis.sismember("ss", "2"));188         //set集合 的大小189         System.out.println(jedis.scard("ss"));190         //返回set集合中随机数据191         System.out.println(jedis.srandmember("ss"));192         //随即返回redis  中的key193         System.out.println(jedis.randomKey());194         195         /**196          * spop随机删除set集合的一个数据197          * 集合之间的 操作198          * 199          * sinter   交集200          * sunion   并集201          * sdiff    差集202          * smove    把  1  集合转移到 2中203          * >smove youSet mySet 4  ---将youSet中的数据4移除的同时将数据4添加到mySet中204          */205         jedis.sinter("可扩展的key,求交集");206         jedis.sunion("可扩展的key,求并集");207         jedis.sdiff("可扩展的key,求差集");208         209     }210     211     /**212      * sorted-sort213      * 214      * zadd 一次只能添加一个215      */216     @Test217     public void testSortedSort(){218         jedis.flushDB();219         jedis.zadd("hhy", 100, "zs");220         jedis.zadd("hhy", 101, "zs1");221         jedis.zadd("hhy", 102, "zs2");222         jedis.zadd("hhy", 103, "zs3");223         //获取zset集合中的值  ---  是一个集合   asc224         /**zrange       asc225          * zrevrange    desc226          */227         Set<String> set = jedis.zrange("hhy", 0, -1);228         for (String str : set) {229             //获取分数230             System.out.println(str);231             //通过这个集合中的值,查询每一个值所对应的分数232             Double zscore = jedis.zscore("hhy", str);233             System.out.println(zscore);234         }235         //可以直接获取到值--分数的对应关系,封装到tuple对象中236         Set<Tuple> set2 = jedis.zrangeWithScores("hhy", 0, -1);237         for (Tuple tuple : set2) {238             System.out.println(tuple.getScore()+" --->"+tuple.getElement());239         }240         //查看zset集合中的数据zs1是第一名241         Long zrank = jedis.zrank("hhy", "zs1");242         System.out.println(zrank);243     }244     245     /**246      * hash类型的操作247      * 基本命令的操作248      */249     @Test250     public void testHash(){251         /**252          * 如何在user中再存一个对象?253          */254         jedis.hset("user", "name", "hhy");255         jedis.hset("user", "age", "25");256         //jedis.hmset("u", new HashMap<String,String>());257         System.out.println(jedis.hget("user", "name"));258         //查询hash中的所有filed和value259         jedis.hkeys("user");260         jedis.hvals("user");261         //s设置多个值和获取多个值  hmset   hmget262         263         264         //获取所有的filed265         jedis.hgetAll("user");266         //当前有多少数据267         jedis.hlen("user");268     }269     270     /**271      * 创建redis的连接对象272      * @param host  主机273      * @param port  端口号274      * @return  jedis对象275      */276     public static Jedis getRedisUtil(String host,int port){277         return new Jedis(host,port);278     }279     280     281 }

 

hash实现简单购物车

package deifeng.testRedis;import java.util.ArrayList;import java.util.HashMap;import java.util.Iterator;import java.util.List;import java.util.Map;import java.util.Map.Entry;import java.util.Set;import redis.clients.jedis.Jedis;/** *  * @author Administrator * timer:2017年2月21日上午9:54:33 * intro:使用hash类型模拟购物车的实现 */public class ShoppingGoods {    //定义主机和端口号    private static String host = "127.0.0.1";    private static int port = 6379;    //hash的那个key的名字    private static String hash_name = "huhy";        public static void main(String[] args) {        //客户端连接redis        Jedis jedis = new Jedis(host, port);                Map<String, String> hash_goods = new HashMap<String, String>();        //添加到hash类型中数据        hash_goods.put("电视", "3");        hash_goods.put("书", "4");        hash_goods.put("大风车", "6");        hash_goods.put("衣服", "10");                jedis.hmset(hash_name, hash_goods);                //当前有多少数据        //System.out.println(jedis.hlen(hash_name)+"个数据");                //遍历数据        List<String> list = new ArrayList<String>();                Set<String> sets = jedis.hkeys(hash_name);//查询key中出所有的fileds        Iterator<String> fileds = sets.iterator();        while(fileds.hasNext()){            //System.out.println(fileds.next().toString());            //通过filed找到对应的value            String filed = fileds.next();            String value = jedis.hget(hash_name, filed);            System.out.println(filed+"------->"+value);                        //把查询出的filed存储到list集合中            list.add(filed);        }                //llist集合中保存的是数据的filed        /**         * 通过hmget的可以取多个值         * hmget(key   filed )  ----> value         */         List<String> ll = jedis.hmget(hash_name, list.get(0), list.get(1), list.get(2),list.get(3));           System.out.print(ll +" ");                   //hgetall命令           Map<String, String> map = jedis.hgetAll(hash_name);           Set<Entry<String, String>> ss = map.entrySet();         Iterator<Entry<String, String>> ii = ss.iterator();         for (Entry<String, String> entry : ss) {            System.out.println(entry.getKey() +"--->"+entry.getValue());         }         //切断客户端连接   释放资源                  jedis.disconnect();    }}

 

原创粉丝点击