redis查询所有value(redis命令查询)

redis里的hash类型怎么查询value?

这样的查询,在Redis是没办法通过value进行比较得出结果的。

但是可以通过不同的数据结构类型来做到这一点,比如如下的数据定义:

users:1 {name:Jack,age:28,location:shanghai}

users:2 {name:Frank,age:30,location:beijing}

users:location:shanghai

其中users:1 users:2 分别定义了两个用户信息,通过Redis中的hash数据结构users:location:shanghai 记录了所有上海的用户id,通过集合数据结构实现。

Jedis jedis = jedisPool.getResource();SetshanghaiIDs = jedis.smembers(\”users:location:shanghai\”);//遍历该set//…//通过hgetall获取对应的user信息jedis.hgetAll(\”users:\” + shanghaiIDs[0]);

ID索引的集合,其次对于一些复杂查询无能为力(当然也不能期望Redis实现像关系数据库那样的查询,Redis不是干这的);

但是Redis2.6集成了Lua脚本,可以通过eval命令,直接在RedisServer环境中执行Lua脚本,并且可以在Lua脚本中调用Redis命令。其实,就是说可以让你用Lua这种脚本语言,对Redis中存储的key value进行操作,这个意义就大了,甚至可以将你们系统所需的各种业务写成一个个lua脚本;

public static final String SCRIPT =\”local resultKeys={};\”+ \”for k,v in ipairs(KEYS) do \”+ \” local tmp = redis.call(\’hget\’, v, \’age\’);\”+ \” if tmp ARGV[1] then \”+ \” table.insert(resultKeys,v);\”+ \” end;\”+ \”end;\”+ \”return resultKeys;\”;执行脚本代码Jedis jedis = jedisPool.getResource();jedis.auth(auth);Listkeys=Arrays.asList(allUserKeys);Listargs = new ArrayList();args.add(\”28\”);ListresultKeys = (List)jedis.evalsha(funcKey, keys, args);return resultKeys;

注意:以上的代码中使用的是evalsha命令,该命令参数的不是直接Lua脚本字符串,而是提前已经加载到Redis中的函数的一个SHA索引,通过以下的代码将系统中所有需要执行的函数提前加载到Redis中,我们的系统维护一个函数哈希表,后续需要实现什么功能,就从函数表中获取对应功能的SHA索引,通过evalsha调用就行。

深入了解Redis操作五大数据类型常用命令

我们知道Redis默认有16个数据库,默认是第0个数据库,那么如果在需要对数据库进行切换的时候,我们就可以使用下面这个命令:

使用如下命令进行切换

如果想要清除指定某一个数据库的数据

清除所有数据库的数据

接下来这个命令应该是最常用的了

平常在开发中,我们还需要经常对key进行判断,判断其是否存在

因为我们设置的缓存数据一般都不能是永久的,这个时候就需要我们在存储数据的时候,就为其设置过期时间。

string类型是Redis中五大基本数据类型之一,这也是最常使用到的一个数据类型,所有很多小伙伴们对Redis的认识和操作就仅仅的停留在了对Redis的操作层面,但是你是否知道string类型中的相关命令,还是有非常多实用的

接下来先看一下对string类型进行基本存储和获取的命令。

如果我们存储的string中的内容是数字的话,我们也可以对其进行增或减操作,Redis可以自动的对字符串进行相关的操作。实现的命令如下:

使用msetnx时,同时设置一个或多个 key-value 对,当且仅当所有给定 key都不存在时才成立。

getset命令从字面意思就可以看出来,他的作用是先get再set。

总结string类似的使用场景:

在使用list类型进行存取的时候,有两个命令需要进行区分:

注意:只有pop和push才分左右,其他的l都是list的意思

总结:

总结set集合一般用于元素的不重复的场景,比如抽奖系统,轮播等场景下

在使用hash集合的时候,要注意,hash其实就是一个Map集合,key-map的时候,值是一个map集合的形式进行存储的,也和Java中的hashmap有一个类似。

HVALS获取所有的value,HKEYS获取所有的key,HGETALL获取所有的键值

总结:

hash可以用于存储变更的数据,比如user,name,age等,尤其是用户信息之类的,hash更加适合用于对象的存储,string更加适合用于字符串的存储。

在set集合的基础上增加一个序列号,来进行排序

ZRANGEBYSCORE使用语法

总结

以上是在对五种数据类型进行存取时的一些常用命令操作。关于其他的命令使用,小伙伴们在用到的时候可以直接入官网查看就可以了。

Redis set数据结构value值全部拿出方法

Redis set数据结构如果用smembers 如果数据量较多的话,使用这个势必会造成线上redis卡顿一下,

0

评论0