Redis学习(五)--------Redis常用操作命令

Redis命令

1、基本语法
redis-cli

[root@static-72-1 ~]# redis-cli 
127.0.0.1:6379> ping
PONG

进入redis 发送PING redis会向你返回一个PONG 表示已连接成功
2、如何远程访问

redis-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 表示。

4、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 中所有域的值

5、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),就是说,让列表只保留指定区间内的元素,不在指定区间之内的元素都将被删除。

6、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 本身

7、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

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值