草庐IT

redis-cli常用命令

L-960 2023-07-11 原文

文章目录

1 redis-cli连接redis服务

1.1 无密码本地登录

redis-cli

redis 127.0.0.1:6379>
redis 127.0.0.1:6379> PING
PONG

1.2 指定ip、端口、密码

redis-cli -h [ip] -p [port] -a [pwd]

1.3 指定ip、端口、密码并清理redis缓存

redis-cli -h [ip] -p [port] -a [pwd] flushall

1.4 指定ip、端口、密码、数据库

redis-cli -h [ip] -p [port] -a [pwd] -n [db_number]

1.5 shell连接redis

#!/bin/bash
Num=`seq 1 1000`
for i in ${Num};do 
	redis-cli -h 127.0.0.1 set key-${i} value-${i}
done
echo "1000个key-value已经写入redis"



//脚本执行完后,可以查看
redis-cli
>>get key-100

2 redis库相关命令

切换到1号库;redis有16个初始化库,编号0到15,默认使用0号库
select 1

如果需要验证
auth [password]

查看当前库的key的数量
dbsize

删除当前库的全部数据
flushdb

删除所有库的全部数据
flushall

3 redis key相关命令

对key有操作的命令,统一返回值都是1或者0,成功为1,失败为0

查看当前库的全部key
keys *

判断某个key是否存在,存在返回1,不存在返回0
exists [key]

查看某个key的类型,如果key不存在,则返回none
type [key]

删除指定的key数据,成功返回1,失败返回0
del [key]

根据value选择非阻塞删除,仅将keys从keyspace元数据中删除,真正的删除后在后续异步操作
unlink [key]

查看某个key的过期时间,单位(秒),-1表示永不过期,-2表示已经过期
ttl [key]

给指定的key设置过期时间,单位(秒)
expire [key] 10

4 redis 字符串相关命令

set <key> <value>:添加一条数据 例如set k1 v1,添加key为k1,值为v1的数据

get <key>:得到某个key的数据,例如get k1,得到key为k1的值

append <key> <value>:将给定的value,追加到某key的原值的末尾,返回追加后的字符长度

strlen <key>:查询某key的值的长度

setnx <key> <value>:当key不存在的时候,才能添加成功,当key存在的时候,不能添加

incr <key>:将某个key的值,数字增加1,仅仅对数字起作用,如果为空,新增值为1

decr <key>:将某个key的值,数字减少1,仅仅对数字起作用,如果为空,新增值为-1

incrby/decrby <key> <步长>:将key中储存的数字值增减,自定义步长

mset <key1> <value1> <key2> <value2>:批量添加

mget <key1> <key2>:批量取值

msetnx <key1> <value1> <key2> <value2>:批量添加,当且仅当所有的key都不存在(因为原子性,一个失败则都失败)

getrange <key> <起始位置> <结束位置>:获取某个key值的范围,getrange k1 0 2,包含0位置的元素,和2位置的元素

setex <key> <过期时间> <value>:设置键值的同时设置过期时间(单位秒)

getset <key> <value>:设置新值,并返回旧值

5 redis 列表相关命令

lpush/rpush <key> <value1> <value2> <value3>:从左边,或者右边添加数据

lpop/rpop <key>:从左边,或者右边取出一个值,列表里这个值就不存在了

rpoplpush <key1> <key2>:从key1的右边取一个值,添加在key2的左边

lrange  <key> <起始位置> <结束位置>:按照索引下角标得到元素(从左往右),当结束为值为-1时,代表得到多有,这个值还在列表中

lindex <key> <index>:按照索引,从左往右获得对应的值

llen <key>:获得列表长度

linsert <key> before/after <value> <newVlaue>: 在某个key下的某个值的前面/后面添加一个新的值

lrem <key> <n> <value>:删除某个key下,删除n个值为value的数据

lset <key> <index> <value>:将某个key下的某个下角标的值换成给定的值

6 redis 集合相关命令

sadd <key> <value1> <value2> <value3>:添加数据,如果值已经存在,忽略该值

smembers <key>:得到集合中所有的值

sismember <key> <value> :判断某个key中是否存在value,存在返回1,不存在返回0 scard  <key>:返回集合的元素个数

srem <key> <value1> <value2>:删除某个key中的某些元素

spop <key>:从key中随机取出一个值,如果值没了,那么key就不在了

srandmember <key> <n>:从某个key中,取出n个值,不会从集合中删除

smove <key1>  <key2> <value>:把集合中的一个值移动到另一个集合

sinter <key1>  <key2>:取两个集合的交集 

sunion <key1>  <key2>:取两个集合的并集 

sdiff <key1>  <key2>:取两个集合的差集(在key1中的,不在key2中的)

7 redis 哈希相关命令

hset  <key> <field> <value>:给某个key哈希表中的field键复制为value

hget <key> <field> :得到某个key哈希表中某个field的值

hmset <key> <field1> <value1> <field2> <value2>:批量加数据

hexists <key> <field1>:某个key哈希表中某个field是否存在

hkeys <key> :查看某个key哈希表中的全部field

hvals <key>:查看某个key哈希表中的全部value

hincrby  <key> <field> <increment>:为某个key的哈希表中的某个field键的值加上响应的增量

hsetnx  <key> <field> <value>:某个key哈希表中的field键复制为value,当且仅当key不存在的时候成功

8 redis 有序集合(Zset)相关命令

zadd  <key> <score1> <value1><score2> <value2>:添加以一个过着多个元素,score为评分,集合按照从低到高及进行排序,评分可以重复

zrange <key> <start> <end> \[withscores\]:查一定范围的元素,end为-1时,查询所有,withscores加上他,连着评分一起查出

zrangebyscore <key> <min> <max> \[withscores\]:查询score评分在某个范围内的数据,从小到大排序

zrevrangebyscore  <key> <max> <min> \[withscores\]:查询score评分在某个范围内的数据,从大到小排序

zincrby  <key> <increment> <value>:为元素的score加上指定的增量

zrem <key> <value>:删除数据

zcount <key> <min> <max>:统计score评分在某个范围内的数据的数量

zrank  <key> <value>:返回集合中的排序,排序从0开始

有关redis-cli常用命令的更多相关文章

  1. 华为常用命令 - 2

    system-view进入系统视图quit退到系统视图sysname交换机命名vlan20创建vlan(进入vlan20)displayvlan显示vlanundovlan20删除vlan20displayvlan20显示vlan里的端口20Interfacee1/0/24进入端口24portlink-typeaccessvlan20把当前端口放入vlan20undoporte1/0/10删除当前VLAN端口10displaycurrent-configuration显示当前配置02配置交换机支持TELNETinterfacevlan1进入VLAN1ipaddress192.168.3.100

  2. ruby - 如何在 Ruby 中执行 Windows CLI 命令? - 2

    我在目录“C:\DocumentsandSettings\test.exe”中有一个文件,但是当我用单引号编写命令时`C:\DocumentsandSettings\test.exe(我无法在此框中显示),用于在Ruby中执行命令,我无法这样做,我收到的错误是找不到文件或目录。我尝试用“//”和“\”替换“\”,但似乎没有任何效果。我也使用过系统、IO.popen和exec命令,但所有的努力都是徒劳的。exec命令还使程序退出,这是我不想发生的。提前致谢。 最佳答案 反引号环境就像双引号,所以反斜杠用于转义。此外,Ruby会将空格解

  3. ruby-on-rails - Rails 3 Cli 执行命令真的很慢吗? - 2

    有人知道为什么我的rails3.0.7cli这么慢吗?当我运行railss或railsg时,他大约需要5秒才能真正执行命令...有什么建议吗?谢谢 最佳答案 更新:我正在将我的建议从rrails切换到rails-sh,因为前者支持REPL,而rrails不是用例。此外,当与ruby​​环境结合使用时,修补似乎确实可以提高性能变量,现在反射(reflect)在答案中。一个可能的原因可能是这个performancebuginruby每当在ruby​​代码中使用“require”时,它就会调用一些代码(更多详细信息here)。在使用Rai

  4. ruby-on-rails - rails -v 无法加载此类文件 -- rails/cli (LoadError) - 2

    Ubuntu14.04。因此一切正常,我打开了带有两个选项卡的终端-一个选项卡在我的sebcoles项目上运行了webbrick,另一个选项卡用于克隆我的english_teacher存储库。一切都下载好了,我进入了目录。我将把所有内容都粘贴在这里-一切都很清楚:andrew:projects$cdpinterestingRVMusedyourGemfileforselectingRuby,itisallfine-Herokudoesthattoo,youcanignorethesewarningswith'rvmrvmrcwarningignore/home/andrew/proje

  5. ruby - 使用 Aruba 和 Bundler 测试基于 Ruby 的 CLI - 2

    我有一个RSpec套件,通过Bundler运行,它正在使用Aruba测试许多不同的命令行应用程序。它工作正常......只要被测试的命令本身不是使用Bundler用Ruby编写的。但我无法弄清楚如何防止RSpec套件的bundler配置干扰本身使用bundler的命令的执行-至少,并非没有极端措施。我尝试了unset_bundler_env_vars和with_clean_env的各种排列,但无济于事。这是我认为可行的技术示例:describe'myrubyapp'dobefore:each{unset_bundler_env_vars}it'shouldwork'doBundler.

  6. ruby - 向 Ruby Thor CLI 添加 --version 选项 - 2

    如何向我的Ruby添加--version选项Thor命令行界面应用程序。例如我希望能够运行$thor_app--version>thor_appversion1.0.0这个问题与RunaCLIThorappwithoutargumentsortaskname有关,但专门添加一个不需要任务的--version选项。注意这是在self-answerformat之后编写的.鼓励添加答案和更新 最佳答案 我在这种方法上运气不错:classCLI:__print_versiondesc"--version,-v","printtheversi

  7. ruby - 在没有参数或任务名称的情况下运行 CLI Thor 应用程序 - 2

    我正在寻找一种方法来创建命令行thor应用程序,该应用程序将运行不带任何参数的默认方法。我摆弄了Thor的default_method选项,但仍然需要我传递一个参数。我找到了一个similarcase有人想运行带有参数但没有任务名称的CLIThor任务。我想运行一个没有任务名称和参数的任务。这样的事情可能吗? 最佳答案 似乎正确的Thor方式是使用default_task:classCommands如果出于某种原因这不是你需要的,你应该能够做类似的事情classCommands 关于ru

  8. 华三防火墙NAT配置CLI - 2

    web界面NAT策略配置位置策略--》NAT动态转换--》策略配置如图所示,有两种NAT的配置方式,一种是基于对象组,另一种是传统的ACL,其实两者并没有什么十分大的区别,对象组是人为的预先定义地址组,然后在配置NAT策略的时候通过调用地址组来完成的,这种方式对于那种简单的网络,临时的策略来说有点麻烦,但是如果是需要配置很多的NAT策略,那么这种方式还是不错的,相较于ACL方式就比较适合临时的策略创建。web方式--基于对象组的NAT策略创建 如图所示,基于对象组的方式需要注意的地方就是对象组,对象组其实就是预先创建的组,这些组内部的成员有很多个种类:如图所示,对象组的成员可以是IP,端口,或

  9. git常用命令 - 2

    gitclonehttp:www.git.com.cn........ 克隆git项目gitbranch 查看分支gitbranch-r查看远程分支gitpushorigin--delete分支名 删除远程分支tmpgitcheckout切换分支gitcheckout-b切换并创建分支gitcheckout-b分支名origin/分支名(如果远程分支已存在最好用此命令,在创建分支时会把远程分支最新代码一并拉下来,不会把原分支代码带过来)gitbranch-D删除分支gitpushorigin--delete分支名gitpush--set-upstreamorigin分支名 推送本地分支到远端g

  10. javascript - 将数据安全地存储在 Node CLI 应用程序中 - 2

    我目前正在编写一个NodeJS命令行应用程序。该应用程序进行API调用并向用户返回一些数据。鉴于这是一个公共(public)API,用户需要一个APItoken。此CLI将通过npmi-gsuper-cool-api-cli在用户计算机上全局安装。用户第一次运行CLI时,系统会提示他们输入token,然后我将其存储起来,以便以后每次运行时都不需要输入。我为用户提供了一种重置方式它也是。我将它存储在我的CLI模块的实际目录中,如前所述,该模块是全局安装的,它看起来像这样:fs.writeFile(__dirname+'/.token.json',JSON.stringify({"toke

随机推荐