Redis实用指令(一)

来源:互联网 发布:mac切换窗口快捷键 编辑:程序博客网 时间:2024/06/15 12:49

今天看Redis官网指令的时候感觉其中很多有可能被我这种非专业人员用到,或者感觉对我很有用,这里简单记录下,直接在redis-cli中使用。

APPEND key value

redis> EXISTS mykey(integer) 0redis> APPEND mykey "Hello"(integer) 5redis> APPEND mykey " World"(integer) 11redis> GET mykey"Hello World"redis>

AUTH password:用来验证redis登录密码的
CLIENT LIST :Redis CLIENT LIST命令用于返回所有连接到服务器的客户端信息和统计数据。
CLIENT GETNAME:返回连接名字或者空(没有设置名字时)。
CLIENT SETNAME connection-name设置当前连接的名字。
COMMAND:返回redis下所有指令(ssh的shell页面可能显示不全)。
COMMAND INFO command-name [command-name …]:查看具体指令的信息。

command:(这里列出最后两个个)173) 1) "geodist"     2) (integer) -4     3) 1) readonly     4) (integer) 1     5) (integer) 1     6) (integer) 1174) 1) "srandmember"     2) (integer) -2     3) 1) readonly        2) random     4) (integer) 1     5) (integer) 1     6) (integer) 1

使用command info指令查看command未显示的信息

127.0.0.1:6379> command info  mget1) 1) "mget"   2) (integer) -2   3) 1) readonly   4) (integer) 1   5) (integer) -1   6) (integer) 1127.0.0.1:6379> 

此指令后可以跟一个指令也可以跟多个,如

command info  mget get set

CONFIG GET parameter:获取redis的配置信息。
使用config get *可以查看所有配置信息(这些信息都是redis支持的配置参数):

127.0.0.1:6379> config get *  1) "dbfilename"  2) "root"  3) "requirepass"  4) ""  5) "masterauth"  6) ""  7) "unixsocket"  8) ""  9) "logfile" 10) "" 11) "pidfile" 12) "/var/run/redis_6379.pid" 13) "slave-announce-ip" 14) ""..............

其中单数行为字段名称,双数行为配置的信息,”“表示未配置或配置为”“.
也可以单独查看某一个配置信息:

127.0.0.1:6379> config get appendonly1) "appendonly"2) "yes"

这里有个很牛逼的功能,模糊查寻某些配置信息:

redis> config get *max-*-entries*1) "hash-max-zipmap-entries"2) "512"3) "list-max-ziplist-entries"4) "512"5) "set-max-intset-entries"6) "512"

使用config get re*可以查看以re开头的配置。

CONFIG SET parameter value:改变配置参数值。
CONFIG REWRITE:重写config中的参数值(把set的值写入config中)。

127.0.0.1:6379> CONFIG GET appendonly           # appendonly 处于关闭状态1) "appendonly"2) "no"127.0.0.1:6379> CONFIG SET appendonly yes       # 打开 appendonlyOK127.0.0.1:6379> CONFIG GET appendonly1) "appendonly"2) "yes"127.0.0.1:6379> CONFIG REWRITE                  # 将 appendonly 的修改写入到 redis.conf 中

CONFIG RESETSTAT:重置INFO命令统计里面的一些计算器。
被重置的数据如下:

Keyspace hitsKeyspace missesNumber of commands processedNumber of connections receivedNumber of expired keys

重置前可以通过info查看信息,之后使用CONFIG RESETSTAT重置信息。

DBSIZE :返回当前数据里面keys的数量。
DECR key:对key对应的数字做减1操作。返回值:数字,减小之后的value。

redis> SET mykey "10"OKredis> DECR mykey(integer) 9redis> SET mykey "234293482390480948029348230948"OKredis> DECR mykeyERR value is not an integer or out of rangeredis> 

DECRBY key :减少指定的整数。
这是个很有意思也很实用的功能,可以减少指定的数字,如果给的数字是负数就可以做加操作。

127.0.0.1:6379> set intkey 256OK127.0.0.1:6379> decrby intkey 5(integer) 251127.0.0.1:6379> decrby intkey -20(integer) 271127.0.0.1:6379> decrby intkey 500(integer) -229

DEL key:删除一个或多个key.(官网上给的是删除一个key,实际可以批量操作,而且给的例子也是删除多个)
DUMP key:对指定的key序列化。
RESTORE key ttl serialized-value [REPLACE]:对dump后的值反序列化。
DUMP 与RESTORE是一对组合

# 创建一个键,作为 DUMP 命令的输入redis> SET greeting "hello, dumping world!"OKredis> DUMP greeting"\x00\x15hello, dumping world!\x06\x00E\xa0Z\x82\xd8r\xc1\xde"# 将序列化数据 RESTORE 到另一个键上面redis> RESTORE greeting-again 0 "\x00\x15hello, dumping world!\x06\x00E\xa0Z\x82\xd8r\xc1\xde"OKredis> GET greeting-again"hello, dumping world!"# 在没有给定 REPLACE 选项的情况下,再次尝试反序列化到同一个键,失败redis> RESTORE greeting-again 0 "\x00\x15hello, dumping world!\x06\x00E\xa0Z\x82\xd8r\xc1\xde"(error) ERR Target key name is busy.# 给定 REPLACE 选项,对同一个键进行反序列化成功redis> RESTORE greeting-again 0 "\x00\x15hello, dumping world!\x06\x00E\xa0Z\x82\xd8r\xc1\xde" REPLACEOK# 尝试使用无效的值进行反序列化,出错redis> RESTORE fake-message 0 "hello moto moto blah blah"(error) ERR DUMP payload version or checksum are wrong

ECHO message:显示输入的字符串。

redis> ECHO HelloWorld!HelloWorld!redis>

EXISTS key [key …]:检查给定的key是否存在。
这里感觉官网上给的也不太好,从指令上看是可以同时检测多个key,但是官网给的例子和数据都是偏向于单个key的操作的。
我操作的有多个key:

127.0.0.1:6379> exists key1 key2 key3(integer) 3127.0.0.1:6379> exists key1 key2 key30(integer) 2127.0.0.1:6379>

这里判断的应该是有多少key返回的整数就是几,如果没有就是0。
EXPIRE key seconds:设置key的有效时间,单位为秒。
EXPIREAT key timestamp:设置有效时间,单位为unix时间戳。

FLUSHALL:清空所有数据库,该Redis下所有库的数据都会被清空。如:db0,db1,db2…..
FLUSHDB:清空当前数据库。FLUSHALL和FLUSHDB都有个特殊说明,一旦执行,就不会失败。
SELECT index:选择数据库。select后跟对应数据库的下标进入相应的数据库,默认进入db0。

GEO开头的几个指令都是跟地理坐标相关的:
GEOADD key longitude latitude member [longitude latitude member …]:这个是用来存储地理坐标的,存到sorted set中。(几个指令结合使用的,有点儿不太好理解…)

redis> GEOADD Sicily 13.361389 38.115556 "Palermo" 15.087269 37.502669 "Catania"(integer) 2redis> GEODIST Sicily Palermo Catania"166274.15156960039"redis> GEORADIUS Sicily 15 37 100 km1) "Catania"redis> GEORADIUS Sicily 15 37 200 km1) "Palermo"2) "Catania"redis> 

GEOPOS key member [member …]:从key里返回所有给定位置元素的位置(经度和纬度)。

redis> GEOADD Sicily 13.361389 38.115556 "Palermo" 15.087269 37.502669 "Catania"(integer) 2redis> GEOPOS Sicily Palermo Catania NonExisting1) 1) "13.361389338970184"   2) "38.115556395496299"2) 1) "15.087267458438873"   2) "37.50266842333162"3) (nil)redis> 

GEODIST key member1 member2 [unit]:返回两个给定位置之间的距离。如果两个位置之间的其中一个不存在, 那么命令返回空值。
指定单位的参数 unit 必须是以下单位的其中一个:
m 表示单位为米。
km 表示单位为千米。
mi 表示单位为英里。
ft 表示单位为英尺。

redis> GEOADD Sicily 13.361389 38.115556 "Palermo" 15.087269 37.502669 "Catania"(integer) 2redis> GEODIST Sicily Palermo Catania"166274.15156960039"redis> GEODIST Sicily Palermo Catania km"166.27415156960038"redis> GEODIST Sicily Palermo Catania mi"103.31822459492736"redis> GEODIST Sicily Foo Bar(nil)redis> 

GEORADIUS key longitude latitude radius m|km|ft|mi [WITHCOORD] [WITHDIST] [WITHHASH] [COUNT count]:以给定的经纬度为中心, 返回键包含的位置元素当中, 与中心的距离不超过给定最大距离的所有位置元素。

redis> GEOADD Sicily 13.361389 38.115556 "Palermo" 15.087269 37.502669 "Catania"(integer) 2redis> GEORADIUS Sicily 15 37 200 km WITHDIST1) 1) "Palermo"   2) "190.4424"2) 1) "Catania"   2) "56.4413"redis> GEORADIUS Sicily 15 37 200 km WITHCOORD1) 1) "Palermo"   2) 1) "13.361389338970184"      2) "38.115556395496299"2) 1) "Catania"   2) 1) "15.087267458438873"      2) "37.50266842333162"redis> GEORADIUS Sicily 15 37 200 km WITHDIST WITHCOORD1) 1) "Palermo"   2) "190.4424"   3) 1) "13.361389338970184"      2) "38.115556395496299"2) 1) "Catania"   2) "56.4413"   3) 1) "15.087267458438873"      2) "37.50266842333162"redis> 

GEORADIUSBYMEMBER:查询指定半径内匹配到的最大距离的一个地理空间元素。

redis> GEOADD Sicily 13.583333 37.316667 "Agrigento"(integer) 1redis> GEOADD Sicily 13.361389 38.115556 "Palermo" 15.087269 37.502669 "Catania"(integer) 2redis> GEORADIUSBYMEMBER Sicily Agrigento 100 km1) "Agrigento"2) "Palermo"redis>

GET key:查询String类型key的value。
GETRANGE key start end:返回value字符串的子串,相当于截取。查看下redis的字符串存储格式就知道怎么截图的了。

redis> SET mykey "This is a string"OKredis> GETRANGE mykey 0 3"This"redis> GETRANGE mykey -3 -1"ing"redis> GETRANGE mykey 0 -1"This is a string"redis> GETRANGE mykey 10 100"string"redis> 

GETSET key value:给key赋新值,并返回原来的值。GETSET可以和INCR一起使用实现支持重置的计数功能。

redis> INCR mycounter(integer) 1redis> GETSET mycounter "0""1"redis> GET mycounter"0"redis> 

Redis中文官网指令:http://www.redis.cn/commands.html
英文官网指令:https://redis.io/commands

0 0
原创粉丝点击