zoukankan      html  css  js  c++  java
  • Jedis客户端操作redis缓存命令详解

    1.对value操作的命令

         exists(key):确认一个key是否存在

         del(key):删除一个key

         type(key):返回值的类型

         keys(pattern):返回满足给定pattern的所有key

         randomkey:随机返回key空间的一个key

         rename(oldname, newname):将key由oldname重命名为newname,若newname存在则删除newname表示的key

         dbsize:返回当前数据库中key的数目

         expire:设定一个key的活动时间(s)

         ttl:获得一个key的活动时间

         select(index):按索引查询

         move(key, dbindex):将当前数据库中的key转移到有dbindex索引的数据库

         flushdb:删除当前选择数据库中的所有key

         flushall:删除所有数据库中的所有key

    2.对String操作的命令

         set(key, value):给数据库中名称为key的string赋予值value

         get(key):返回数据库中名称为key的string的value

         getset(key, value):给名称为key的string赋予上一次的value

         mget(key1, key2,…, key N):返回库中多个string(它们的名称为key1,key2…)的value

         setnx(key, value):如果不存在名称为key的string,则向库中添加string,名称为key,值为value

         setex(key, time, value):向库中添加string(名称为key,值为value)同时,设定过期时间time

         mset(key1, value1, key2, value2,…key N, value N):同时给多个string赋值,名称为key i的string赋值value i

         msetnx(key1, value1, key2, value2,…key N, value N):如果所有名称为key i的string都不存在,则向库中添加string,名称key i赋值为value i

         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的子串

    3.对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之间的元素(下标从0开始,下同)

         ltrim(key, start, end):截取名称为key的list,保留start至end之间的元素

         lindex(key, index):返回名称为key的list中index位置的元素

         lset(key, index, value):给名称为key的list中index位置的元素赋值为value

         lrem(key, count, value):删除count个名称为key的list中值为value的元素。count为0,删除所有值为value的元素,count>0      从头至尾删除count个值为value的元素,count<0从尾到头删除|count|个值为value的元素。

         lpop(key):返回并删除名称为key的list中的首元素

         rpop(key):返回并删除名称为key的list中的尾元素

         blpop(key1, key2,… key N, timeout):lpop 命令的block版本。即当timeout为0时,若遇到名称为key i的list不存在或该list为空,则命令结束。如果 timeout>0,则遇到上述情况时,等待timeout秒,如果问题没有解决,则对key i+1开始的list执行pop操作。

         brpop(key1, key2,… key N, timeout):rpop的block版本。参考上一命令。

         rpoplpush(srckey, dstkey):返回并删除名称为srckey的list的尾元素,并将该元素添加到名称为dstkey的list的头部

    4.对Set操作的命令

         sadd(key, member):向名称为key的set中添加元素member

         srem(key, member) :删除名称为key的set中的元素member

         spop(key) :随机返回并删除名称为key的set中一个元素

         smove(srckey, dstkey, member) :将member元素从名称为srckey的集合移到名称为dstkey的集合

         scard(key) :返回名称为key的set的基数

         sismember(key, member) :测试member是否是名称为key的set的元素

         sinter(key1, key2,…key N) :求交集

         sinterstore(dstkey, key1, key2,…key N) :求交集并将交集保存到dstkey的集合

         sunion(key1, key2,…key N) :求并集

         sunionstore(dstkey, key1, key2,…key N) :求并集并将并集保存到dstkey的集合

         sdiff(key1, key2,…key N) :求差集

         sdiffstore(dstkey, key1, key2,…key N) :求差集并将差集保存到dstkey的集合

         smembers(key) :返回名称为key的set的所有元素

         srandmember(key) :随机返回名称为key的set的一个元素

    由上面可以看出,存储的数据类型不一样,jedis的函数也会不一样,但是有一定的规律,操作String类型的value的,函数都是很普通的函数,可以直接的看出函数的作用,只是个别的带m而已,操作list集合的函数,相应在操作String的value的函数的前提下,在函数名称面前添加小写的L即可。同理,操作HashMap集合的value时,在String类型的value函数前加上小写的H,其他的类似,但是有一点需要特别注意的是,操作list集合的value时,时常会遇到no such key excepion,所以当你确定是操作list集合的value时,一定要先调用jedis.lpush("xxx名称","xxx".....),函数先,以保证xxx名称在jedis缓存中存在,而且在调用jedis.lrange("xxx",int start,int end);函数时遍历时,也需要特别注意,end一定能到超出xxx集合的大小,也不能想等,否则会报index out of range exception

    5.对zset(sorted set)操作的命令

         zadd(key, score, member):向名称为key的zset中添加元素member,score用于排序。如果该元素已经存在,则根据score更新该元素的顺序。

         zrem(key, member) :删除名称为key的zset中的元素member

         zincrby(key, increment, member) :如果在名称为key的zset中已经存在元素member,则该元素的score增加increment;否则向集合中添加该元素,其score的值为increment

         zrank(key, member) :返回名称为key的zset(元素已按score从小到大排序)中member元素的rank(即index,从0开始),若没有member元素,返回“nil”

         zrevrank(key, member) :返回名称为key的zset(元素已按score从大到小排序)中member元素的rank(即index,从0开始),若没有member元素,返回“nil”

         zrange(key, start, end):返回名称为key的zset(元素已按score从小到大排序)中的index从start到end的所有元素

         zrevrange(key, start, end):返回名称为key的zset(元素已按score从大到小排序)中的index从start到end的所有元素

         zrangebyscore(key, min, max):返回名称为key的zset中score >= min且score <= max的所有元素

         zcard(key):返回名称为key的zset的基数

         zscore(key, element):返回名称为key的zset中元素element的score

         zremrangebyrank(key, min, max):删除名称为key的zset中rank >= min且rank <= max的所有元素

         zremrangebyscore(key, min, max) :删除名称为key的zset中score >= min且score <= max的所有元素

         zunionstore / zinterstore(dstkeyN, key1,…,keyN, WEIGHTS w1,…wN, AGGREGATE SUM|MIN|MAX):对N个zset求并集和交集,并将最后的集合保存在dstkeyN中。对于集合中每一个元素的score,在进行AGGREGATE运算前,都要乘以对于的WEIGHT参数。如果没有提供WEIGHT,默认为1。默认的AGGREGATE是SUM,即结果集合中元素的score是所有集合对应元素进行 SUM运算的值,而MIN和MAX是指,结果集合中元素的score是所有集合对应元素中最小值和最大值。

    /**************jedis String operation test*****************/ jedis.set("jedis4","jedis4"); logger.info("=-===========jedis.get("jedis4")========" + jedis.get("jedis4")); jedis.append("jedis4","jedis3"); logger.info("=-===========jedis.get("jedis4")========" + jedis.get("jedis4")); jedis.expire("jedis4",1); try{ Thread.sleep(1500); }catch (InterruptedException E){ logger.info(E.toString()); } logger.info("=-===========jedis.get("jedis4")========" + jedis.get("jedis4")); /**************jedis String operation test*****************/ /**************jedis HashMap operation test*****************/ Map<String,String> map = new HashMap<>(); map.put("map3","map3"); map.put("map4","map4"); jedis.hmset("hasmap1",map); logger.info("======jedis.hmget("hasmap1","map3")===========>>" + jedis.hmget("hasmap1","map4","map3")); logger.info("======jedis.hgetAll("hasmap1")===========>>" + jedis.hgetAll("hasmap1")); logger.info("======jedis.hkeys("hasmap1")===========>>" + jedis.hkeys("hasmap1")); logger.info("======jedis.hvals("hasmap1")===========>>" + jedis.hvals("hasmap1")); /**************jedis HashMap operation test*****************/ /**************jedis list operation test*****************/ jedis.lpush("listTest2","list2","list3","lllll"); jedis.lset("listTest2",0,"list1"); jedis.lset("listTest2",1,"list1"); jedis.lset("listTest2",2,"list1"); logger.info("======jedis.lrange("listTest2",0,4)===========>>" + jedis.lrange("listTest2",0,jedis.llen("listTest2")-1)); jedis.lpush("list5","fdf");//list的必须先调用这个方法才能在list里面存储数据否则报no such key exception jedis.lset("list5",0,"list1"); jedis.lset("list5",1,"list2"); logger.info("======jedis.lrange("list5",0,4)===========>>" + jedis.lrange("list5",0,jedis.llen("list5")-1));

    : =-===========jedis.get("jedis4")========jedis4
    : =-===========jedis.get("jedis4")========jedis4jedis3
    : =-===========jedis.get("jedis4")========null
    : ======jedis.hmget("hasmap1","map3")===========>>[map4, map3]
    : ======jedis.hgetAll("hasmap1")===========>>{map3=map3, map4=map4}
    : ======jedis.hkeys("hasmap1")===========>>[map3, map4]
    : ======jedis.hvals("hasmap1")===========>>[map3, map4]
    : ======jedis.lrange("listTest2",0,4)===========>>[list1, list1, list1, list1, list1, list1, list1, list1, list1]
    : ======jedis.lrange("list5",0,4)===========>>[list1, list2, list1]

    6.对Hash操作的命令

         hset(key, field, value):向名称为key的hash中添加元素field<—>value

         hget(key, field):返回名称为key的hash中field对应的value

         hmget(key, field1, …,field N):返回名称为key的hash中field i对应的value

         hmset(key, field1, value1,…,field N, value N):向名称为key的hash中添加元素field i<—>value i

         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

    参考文章:http://www.cnblogs.com/libaoting/p/4418007.html

  • 相关阅读:
    如何与多个线程的操作epoll fd
    谈谈Runtime类中的freeMemory,totalMemory,maxMemory等几个方法
    JAVA实现实用的ZIP压缩与解压
    HornetQ
    github
    实例解析shell子进程(subshell )
    Linux Shell Scripting Tutorial (LSST) v2.0
    java中byte数组与int类型的转换(两种方式)
    inotifywait实现目录监控
    子shell的$$
  • 原文地址:https://www.cnblogs.com/jimcsharp/p/8617001.html
Copyright © 2011-2022 走看看