如何在linux中查询redis的数据

如何在linux中查询redis的数据,第1张

1、执行如图是命令,查看redis服务是否启动。

2、执行命令“redis-cli”进入redis命令行界面。

3、执行命令“dbsize”。

4、执行命令“flushall”刷新清除。

5、执行命令“ keys  ”进行验证redis是否为空,可以看到redi数据

redis的值有5种类型,不同的类型有不同的命令来获取:

字符直接 get key

队列 左端d出一个元素 LPOP key

哈希 HGET key field

集合 SMEMBERS key 返回集合中的所有元素

有序集合ZRANGE key start stop

更详细的命令可以查看redis常用命令。

key已经存在的时间,不知道是否可以获取。

TTL key //获取key的有效时间。

或者我们将key存入hash类型中,用一个create_time字段来存储字段的创建时间。

hmset key fieldName1 value create_time "2018-11-10 00:17:10"

希望对你有所帮助。推荐一个学习redis入门学习网站,apeit-程序猿IT中关于redis由浅入深的学习。

该参数表示Redis在对交换文件执行IO *** 作时所应用的最大线程数量。通常而言,我们推荐该值等于主机的CPU cores。

如果将该值设置为0,那么Redis在与交换文件进行IO交互时,将以同步的方式执行此 *** 作。

1、使用idea创建spring boot项目。

2、添加pring-boot-starter-data-redis依赖。

3、添加一个测试接口。

4、启动项目,查看redis *** 作结果,发现key为不熟悉编码。

5、添加配置文件,主要代码redisTemplatesetKeySerializer(new StringRedisSerializer())。

6、重启项目,重新调用接口,再次查看redis结果。

注意事项:

可以使用方法获取对象中的key和value,相应的在d3js中,也有这些方法可以获取对象的key和value。

官方在26版本推出了一个新的功能-pipe mode,即将支持Redis协议的文本文件直接通过pipe导入到服务端。

说来拗口,具体实现步骤如下:

1 新建一个文本文件,包含redis命令

SET Key0 Value0

SET Key1 Value1

SET KeyN ValueN

如果有了原始数据,其实构造这个文件并不难,譬如shell,python都可以

2 将这些命令转化成Redis Protocol。

因为Redis管道功能支持的是Redis Protocol,而不是直接的Redis命令。

如何转化,可参考后面的脚本。

3 利用管道插入

cat datatxt | redis-cli --pipe

Shell VS Redis pipe

下面通过测试来具体看看Shell批量导入和Redis pipe之间的效率。

测试思路:分别通过shell脚本和Redis pipe向数据库中插入10万相同数据,查看各自所花费的时间。

Shell

脚本如下:

#!/bin/bashfor ((i=0;i<100000;i++))doecho -en "helloworld" | redis-cli -x set name$i >>redislog

done

每次插入的值都是helloworld,但键不同,name0,name1name99999。

Redis pipe

Redis pipe会稍微麻烦一点

1> 首先构造redis命令的文本文件

在这里,我选用了python

#!/usr/bin/pythonfor i in range(100000):    print 'set name'+str(i),'helloworld'

# python 1py > redis_commandstxt

# head -2 redis_commandstxt

set name0 helloworld

set name1 helloworld

2> 将这些命令转化成Redis Protocol

在这里,我利用了github上一个shell脚本,

#!/bin/bashwhile read CMD; do

# each command begins with {number arguments in command}\r\n

XS=($CMD); printf "${#XS[@]}\r\n"

# for each argument, we append ${length}\r\n{argument}\r\n  for X in $CMD; do printf "\$${#X}\r\n$X\r\n"; donedone < redis_commandstxt

# sh 20sh > redis_datatxt

# head -7 redis_datatxt

3$3set

$5name0

$10helloworld

至此,数据构造完毕。

测试结果

如下:

时间消耗完全不是一个量级的。

最后,来看看pipe的实现原理,

redis-cli --pipe tries to send data as fast as possible to the server

At the same time it reads data when available, trying to parse it

Once there is no more data to read from stdin, it sends a special ECHO command with a random 20 bytes string: we are sure this is the latest command sent, and we are sure we can match the reply checking if we receive the same 20 bytes as a bulk reply

Once this special final command is sent, the code receiving replies starts to match replies with this 20 bytes When the matching reply is reached it can exit with success

即它会尽可能快的将数据发送到Redis服务端,并尽可能快的读取并解析数据文件中的内容,一旦数据文件中的内容读取完了,它会发送一个带有20个字节的字符串的echo命令,Redis服务端即根据此命令来确认数据已插入完毕。

总结:

后续有童鞋好奇,构造redis命令的时间和将命令转化为protocol的时间,这里一并贴下:

[root@mysql-server1 ~]# time python 1py > redis_commandstxt

real    0m0110s

user    0m0070s

sys    0m0040s

[root@mysql-server1 ~]# time sh 20sh > redis_datatxt

real    0m7112s

user    0m5861s

sys    0m1255s

在 Redis 中查看数据可以使用以下命令:

keys pattern 命令可以列出匹配给定模式的所有键名。例如,执行 keys 可以列出所有的键名。

type key 命令可以查看指定键的数据类型。例如,执行 type mykey 可以查看键 mykey 的数据类型。

get key 命令可以获取指定键的值。例如,执行 get mykey 可以获取键 mykey 的值。

hgetall key 命令可以获取指定哈希表的所有键值对。例如,执行 hgetall myhash 可以获取哈希表 myhash 的所有键值对。

lrange key start stop 命令可以获取指定列表的一部分元素。例如,执行 lrange mylist 0 -1 可以获取列表 mylist 的所有元素。

smembers key 命令可以获取指定集合的所有成员。例如,执行 smembers myset 可以获取集合 myset 的所有成员。

zrange key start stop 命令可以获取指定有序集合的一部分成员。例如,执行 zrange myzset 0 -1 可以获取有序集合 myzset 的所有成员。

以上是 Redis 中一些基本的数据查看命令,具体使用取决于你想要查看的数据类型和数据结构。

使用Redis的脚本功能实现Redis中数据简单查询,有需要的朋友可以参考下。 在Redis的设计中,key是一切,对于Redis是可见的,而value对于Redis来说就是一个字节数组,Redis并不知道你的value中存储的是什么

以上就是关于如何在linux中查询redis的数据全部的内容,包括:如何在linux中查询redis的数据、redis lpush 后 如何取出所有相对key的值、请教各位,如何获得redis中key的已经存在的时间等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/10136239.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-05
下一篇 2023-05-05

发表评论

登录后才能评论

评论列表(0条)

保存