Redis命令
1、基本语法:
redis-cli
[root@static-72-1 ~]# redis-cli 127.0.0.1:6379> ping PONG 1 2 3
进入redis 发送PING redis会向你返回一个PONG 表示已连接成功
2、如何远程访问
edis-cli -h ip -p 6379 -a password
[root@static-72-1 redis-5.0.4]# redis-cli -h 127.0.0.1 -p 6379 -a redis1234
密码设置和查看
不重启服务方法
config set requirepass password
3、Redis 键(key)
- keys:
查找所有符合给定模式( pattern)的 key
- exists:
判断某个key是否存在
- move key db :
将当前数据库的 key 移动到给定的数据库 db 当中
- expire key seconds:
给key设置过期时间,单位为秒,过期或自动清除key
- TTL:
以秒为单位,返回给定 key 的剩余生存时间
-2表示key不存在
-1表示永不过期
- type key:
查看key当前的类型
4、Redis字符串(string)
Redis中的自增命令和自减命令
- incr key:
对key对应的值进行加一操作
若key对应的值不能被解释为数字,则会返回错误
如果key不存在,则会创建一个key,值初始化为0,然后执行incr加一操作
- incrby key increment:
为key对应的值加上增量increment
如果键 key 不存在, 那么键 key 的值会先被初始化为 0 , 然后再执行 INCRBY 命令。
如果键 key 储存的值不能被解释为数字, 那么 INCRBY 命令将返回一个错误。
- incrbyfloat key increment:
为key 储存的值加上浮点数增量 increment
如果键 key 不存在, 那么 INCRBYFLOAT 会先将键 key 的值设为 0 , 然后再执行加法操作。
如果命令执行成功, 那么键 key 的值会被更新为执行加法计算之后的新值, 并且新值会以字符串的形式返回给调用者。
- decr key:
为key值存储的数字减1
如果键 key 不存在, 那么键 key 的值会先被初始化为 0 , 然后再执行 DECR 操作。
如果键 key 储存的值不能被解释为数字, 那么 DECR 命令将返回一个错误。
- decrby key:
将键 key 储存的整数值减去减量 decrement 。
如果键 key 不存在, 那么键 key 的值会先被初始化为 0 , 然后再执行 DECRBY 命令。
如果键 key 储存的值不能被解释为数字, 那么 DECRBY 命令将返回一个错误
- set key value:
将字符串值value关联到key
如果key已经有其他值,set就会复写值,无视类型
- setnx key value:
只要键key不存在的情况下,将key的值设为value
若key已经存在,不会执行任何动作
命令在设置成功时返回 1 , 设置失败时返回 0 。
- setex key seconds value:
将key的值设为value,并设置key的生存时间 单位为秒
如果key存在,则覆盖原有的值
- psetex key milliseconds value:
与setex相似,但是它设置的生存时间是以毫秒为单位的
- get key:
获取与key相关的字符串
只能用于获取字符串类型的value,存在返回对应的值,不存在返回nil
- getset key value:
将key设置为value,并返回key设置前的旧值
若key之前没有值则返回nil,若key不是字符串则返回错误
- strlen key:
返回key对应存储字符串的长度
- append key value:
如果key存在,且key对应的值是一串字符串,append会将value值追加到key值现有值的末尾,并返回value值的长度
如果key不存在,则作用就像set key value 一样,返回值的长度
- setrange key offset value:
从规定偏移量开始,用指定的value值去覆写key对应存储字符串的值
不存在的键 key 当作空白字符串处理。
SETRANGE 命令会确保字符串足够长以便将 value 设置到指定的偏移量上, 如果键 key 原来储存的字符串长度比偏移量小(比如字符串只有 5 个字符长,但你设置的 offset 是 10 ), 那么原字符和偏移量之间的空白将用零字节(zerobytes, “\x00” )进行填充。
- getrange key start end:
返回key值指定范围内的值,范围有偏移量start和end决定
负数偏移量表示从字符串的末尾开始计数, -1 表示最后一个字符, -2 表示倒数第二个字符, 以此类推
- mset key value [key value …]:
同时为多个键设置值。
如果某个给定键已经存在, 那么 MSET 将使用新值去覆盖旧值
- msetnx key value [key value …]:
当且仅当所有给定键都不存在时, 为所有给定键设置值。
即使只有一个给定键已经存在, MSETNX 命令也会拒绝执行对所有键的设置操作。
当所有给定键都设置成功时, 命令返回 1 ; 如果因为某个给定键已经存在而导致设置未能成功执行, 那么命令返回 0 。
- mget key1 key 2…:
返回给定的一个或多个字符串键的值。
如果给定的字符串键里面, 有某个键不存在, 那么这个键的值将以特殊值 nil 表示。
5、Redis 哈希表(hash) 重点项目常用
- hset hash field value::
将哈希表 hash 中域 field 的值设置为 value 。
如果给定的哈希表并不存在, 那么一个新的哈希表将被创建并执行 HSET 操作。
如果域 field 已经存在于哈希表中, 那么它的旧值将被新值 value 覆盖。
当 HSET 命令在哈希表中新创建 field 域并成功为它设置值时, 命令返回 1 ; 如果域 field 已经存在于哈希表, 并且 HSET 命令成功使用新值覆盖了它的旧值, 那么命令返回 0 。
- hsetnx hash field value:
当且仅当field尚未存在于hash表的情况下,将其值设为value,正确返回值1
如果给定域已经存在哈希表中,那么僵放弃此次操作,返回值0
如果hash不存在,那将创建一个新的哈希表并执行操作,返回1
- hget key field:
HGET 命令在默认情况下返回给定域的值。
如果给定域不存在于哈希表中, 又或者给定的哈希表并不存在, 那么命令返回 nil
- hgetall key:
返回哈希表 key 中,所有的域和值。
在返回值里,紧跟每个域名(field name)之后是域的值(value),所以返回值的长度是哈希表大小的两倍。
- hexists key field:
检查给定域field是否存在于哈希表中,存在返回1,不存在返回0
- hdel key field[fiel]:
删除哈希表 key 中的一个或多个指定域,不存在的域将被忽略。
- hlen key:
返回哈希表key中域的数
- hstrlen key field:
返回哈希表 key 中, 与给定域 field 相关联的值的字符串长度(string length)。
如果给定的键或者域不存在, 那么命令返回 0
- HINCRBY key field increment:
为哈希表 key 中的域 field 的值加上增量 increment 。
增量也可以为负数,相当于对给定域进行减法操作。
如果 key 不存在,一个新的哈希表被创建并执行 HINCRBY 命令。
如果域 field 不存在,那么在执行命令前,域的值被初始化为 0 。
对一个储存字符串值的域 field 执行 HINCRBY 命令将造成一个错误。
- HINCRBYFLOAT key field increment:
为哈希表 key 中的域 field 加上浮点数增量 increment 。
如果哈希表中没有域 field ,那么 HINCRBYFLOAT 会先将域 field 的值设为 0 ,然后再执行加法操作。
如果键 key 不存在,那么 HINCRBYFLOAT 会先创建一个哈希表,再创建域 field ,最后再执行加法操作。
- HMSET key field value [field value …]:
同时将多个 field-value (域-值)对设置到哈希表 key 中。
此命令会覆盖哈希表中已存在的域。
如果 key 不存在,一个空哈希表被创建并执行 HMSET 操作。
- HMGET key field [field …]:
返回哈希表 key 中,一个或多个给定域的值。
如果给定的域不存在于哈希表,那么返回一个 nil 值。
因为不存在的 key 被当作一个空哈希表来处理,所以对一个不存在的 key 进行 HMGET 操作将返回一个只带有 nil 值的表。
- HKEYS key:
返回哈希表 key 中的所有域。
- HVALS key
返回哈希表 key 中所有域的值
6、Redis 列表(list)
常用命令
- lpush key value [value…]:
将一个或多个值 value 插入到列表 key 的表头
如果有多个 value 值,那么各个 value 值按从左到右的顺序依次插入到表头: 比如说,对空列表 mylist 执行命令 LPUSH mylist a b c ,列表的值将是 c b a ,这等同于原子性地执行 LPUSH mylist a 、 LPUSH mylist b 和 LPUSH mylist c 三个命令。
如果 key 不存在,一个空列表会被创建并执行 LPUSH 操作。
当 key 存在但不是列表类型时,返回一个错误
- lpushx key vale:
将值 value 插入到列表 key 的表头,当且仅当 key 存在并且是一个列表。返回当前长度
和 LPUSH key value [value …] 命令相反,当 key 不存在时, LPUSHX 命令什么也不做。
- rpush key value[value…]:
将一个或多个值 value 插入到列表 key 的表尾(最右边)。
如果有多个 value 值,那么各个 value 值按从左到右的顺序依次插入到表尾:比如对一个空列表 mylist 执行 RPUSH mylist a b c ,得出的结果列表为 a b c ,等同于执行命令 RPUSH mylist a 、 RPUSH mylist b 、 RPUSH mylist c 。
如果 key 不存在,一个空列表会被创建并执行 RPUSH 操作。
当 key 存在但不是列表类型时,返回一个错误。
- rpushx key value:
将值 value 插入到列表 key 的表尾,当且仅当 key 存在并且是一个列表。
和 RPUSH key value [value …] 命令相反,当 key 不存在时, RPUSHX 命令什么也不做。
- lpop key:
移除并返回列表key的头元素
- rpop key:
移除并返回列表key的尾元素
- RPOPLPUSH source destination:
将列表 source 中的最后一个元素(尾元素)弹出,并返回给客户端。
将 source 弹出的元素插入到列表 destination ,作为 destination 列表的的头元素。
如果 source 不存在,值 nil 被返回,并且不执行其他动作。
如果 source 和 destination 相同,则列表中的表尾元素被移动到表头,并返回该元素,可以把这种特殊情况视作列表的旋转(rotation)操作。
- LREM key count value:
根据参数 count 的值,移除列表中与参数 value 相等的元素。返回移除成功得个数
- llen key:
返回查询key的长度
- LINDEX key index:
返回列表 key 中,下标为 index 的元素。
- LINSERT key BEFORE|AFTER pivot value:
将值 value 插入到列表 key 当中,位于值 pivot 之前或之后。
- LSET key index value:
将列表 key 下标为 index 的元素的值设置为 value 。
- LRANGE key start stop:
返回列表 key 中指定区间内的元素,区间以偏移量 start 和 stop 指定。
- LTRIM key start stop:
对一个列表进行修剪(trim),就是说,让列表只保留指定区间内的元素,不在指定区间之内的元素都将被删除。
7、Redis 集合(set)
- SADD key member [member …]:
将一个或多个 member 元素加入到集合 key 当中,已经存在于集合的 member 元素将被忽略。
假如 key 不存在,则创建一个只包含 member 元素作成员的集合。
当 key 不是集合类型时,返回一个错误。
- SISMEMBER key member:
判断 member 元素是否集合 key 的成员。存在返回1 不存在返回0
- SPOP key [count]:
移除并返回集合中的一个随机元素。
如果只想获取一个随机元素,但不想该元素从集合中被移除的话,可以使用 SRANDMEMBER key [count] 命令。
- SRANDMEMBER key [count]:
随机返回参数
如果命令执行时,只提供了 key 参数,那么返回集合中的一个随机元素
- SREM key member [member …]:
移除集合 key 中的一个或多个 member 元素,不存在的 member 元素会被忽略。
当 key 不是集合类型,返回一个错误。
- SMOVE source destination member:
将 member 元素从 source 集合移动到 destination 集合。
SMOVE 是原子性操作。
如果 source 集合不存在或不包含指定的 member 元素,则 SMOVE 命令不执行任何操作,仅返回 0 。否则, member 元素从 source 集合中被移除,并添加到 destination 集合中去。
当 destination 集合已经包含 member 元素时, SMOVE 命令只是简单地将 source 集合中的 member 元素删除。
当 source 或 destination 不是集合类型时,返回一个错误。
- SMEMBERS key:
返回集合 key 中的所有成员。
不存在的 key 被视为空集合。
- SINTER key [key …]:
返回一个集合的全部成员,该集合是所有给定集合的交集。
不存在的 key 被视为空集。
当给定集合当中有一个空集时,结果也为空集(根据集合运算定律)
- SINTERSTORE destination key [key …]:
这个命令类似于 SINTER key [key …] 命令,但它将结果保存到 destination 集合,而不是简单地返回结果集。
如果 destination 集合已经存在,则将其覆盖。
destination 可以是 key 本身
8、Redis有序 集合(sorted set)
- ZADD key score member [[score member] [score member] …]:
将一个或多个 member 元素及其 score 值加入到有序集 key 当中。
如果某个 member 已经是有序集的成员,那么更新这个 member 的 score 值,并通过重新插入这个 member 元素,来保证该 member 在正确的位置上。
score 值可以是整数值或双精度浮点数。
如果 key 不存在,则创建一个空的有序集并执行 ZADD 操作。
当 key 存在但不是有序集类型时,返回一个错误。
- ZSCORE key member:
返回有序集 key 中,成员 member 的 score 值。
如果 member 元素不是有序集 key 的成员,或 key 不存在,返回 nil
- ZINCRBY key increment member:
为有序集 key 的成员 member 的 score 值加上增量 increment 。
可以通过传递一个负数值 increment ,让 score 减去相应的值,比如 ZINCRBY key -5 member ,就是让 member 的 score 值减去 5 。
当 key 不存在,或 member 不是 key 的成员时, ZINCRBY key increment member 等同于 ZADD key increment member 。
当 key 不是有序集类型时,返回一个错误。
score 值可以是整数值或双精度浮点数。
- ZRANGE key start stop [WITHSCORES]:
返回有序集 key 中,指定区间内的成员。
其中成员的位置按 score 值递增(从小到大)来排序。
具有相同 score 值的成员按字典序(lexicographical order )来排列。
- ZREM key member [member …]:
移除有序集 key 中的一个或多个成员,不存在的成员将被忽略。
当 key 存在但不是有序集类型时,返回一个错误
参考资料
https://www.jb51.net/article/137916.htm
http://www.runoob.com/redis/redis-commands.html
作者:大章
来源:CSDN
原文:https://blog.csdn.net/szzzgyn/article/details/88888197
版权声明:本文为博主原创文章,转载请附上博文链接!