redis原理(三)redis命令

一、字符串命令:

1、字符串基本操作:

(1)SET:执行成功时返回OK:

(2)GET:获取value值

(3)DEL:返回被成功删除的值的数量

redis原理(三)redis命令_第1张图片

(4)strlen,exists,decr,incr,setex,expire key 60;ttl key 【设置过期时间+查看指定key的过期时间】 等等;

2、自增自减 :如果一个值可以被解释为十进制整数或者浮点数,redis允许用户对这个字符串进行INCR*、DECR*操作。

(1)INCR key:将键存储的值的值加1。

(2)DECR key:将键存储的值减1。

(3)INCRBY key increment:将键存储的值加上整数 increment。

(4)DECRBY key decrement:将键存储的值减去整数 decrement。

(5)INCRBYFLOAT key decrement:将键存储的值加上浮点数decrement。这个命令在redis2.6及以上可以使用。

127.0.0.1:6379> set age 1
OK
127.0.0.1:6379> INCR age
(integer) 2
127.0.0.1:6379> get age
"2"
127.0.0.1:6379> DECR age
(integer) 1
127.0.0.1:6379> get age
"1"
127.0.0.1:6379> INCRBY age 3
(integer) 4
127.0.0.1:6379> get age
"4"
127.0.0.1:6379> DECRBY age 1
(integer) 3
127.0.0.1:6379>

3、处理子串和二进制位:

(1)APPEND

(2)GETRANGE:

(3)SETRANGE:

(4)GETBIT:

(5)SETBIT:

(6)BITCOUNT:

(7)BITOP:

二、列表命令:

1、基础命令:

(1)LPUSH 命令:在 列表 的左侧添加元素,成功返回当前列表的长度。 

127.0.0.1:6379> lpush key java
(integer) 1

   LPUSH 一次可以给 key 添加多个 value

127.0.0.1:6379> lpush key python php c
(integer) 4

  (2)RPUSH 命令:将元素推入列表的右端,用法和 lpush 相同。

127.0.0.1:6379> rpush key rust
(integer) 6
127.0.0.1:6379> rpush key asm scala
(integer) 8

(3)LPOP 命令:从列表的左端弹出元素

(4)RPOP命令:从列表的右端弹出元素

(5)llen 命令:  返回列表的当前长度

127.0.0.1:6379> llen key
(integer) 8

(6)LINDEX 命令: 获取列表在给定位置上的一个元素;

127.0.0.1:6379> lindex key  1
"python"

(7)LRANGE 命令: 获取列表在给定范围内的所有元素

127.0.0.1:6379> lrange key 0 3
1) "c++"
2) "c"
3) "php"
4) "python"

(8)ltrim 命令:用于截取列表内元素

127.0.0.1:6379> ltrim key 0 5
OK
127.0.0.1:6379> lrange key 0 -1
1) "c++"
2) "c"
3) "php"
4) "python"
5) "java"
6) "rust"

2、阻塞式命令:这组命令常用于消息传递、任务队列。

(1)blpop 命令:从第一个非空列表中弹出位于最左端的元素,或者在timeout秒之内阻塞并等待可弹出的元素出现。

blpop key [key ...] timeout

demo:同时开两个 Redis 的客户端,然后在客户端一输入如下命令:

#在 key1 和 key2 列表中弹出一个值,如果两个列表都为空则阻塞 5 秒,因为现在 key1 和 key2 都为空,因此 blpop 阻塞了 5 秒。
127.0.0.1:6379> blpop key1 key2 5
(nil)
(5.06s)

再次在客户端一输入如下命令:

127.0.0.1:6379> blpop key1 key2 20

  由于 key1 和 key2 同样什么都没有,因此 blpop 命令进入 20 秒的阻塞状态,此时,我们在客户端二输入如下命令:

127.0.0.1:6379> lpush key1 java
(integer) 1

观察客户端一,客户端一输出如下:

1) "key1"
2) "java"
(9.51s)

也就是客户端一的 blpop 阻塞了 9.51 秒 以后 key1 列表弹出一个值 java。

(2)brpop 命令: 从第一个非空列表中弹出位于最右端的元素,或者在timeout秒之内阻塞并等待可弹出的元素出现。

(3)rpoplpush 命令:

(4)brpoplpush 命令 :

三、集合命令:

1、基本命令:

(1)SADD:将元素添加到集合;

(2)SREM:从集合中移除元素

(3)SISMEMBER:检查一个元素是否存在于集合中;

(4)SCARD:

(5)SMEMBERS:获取集合包含的所有元素(谨慎使用,如果数据量大会很慢)

(6)SRANDMEMBER:

(7)SPOP:

(8)SMOVE:

redis原理(三)redis命令_第2张图片

2、用于组合和处理多个集合的redis命令:

(1)SDIFF:

(2)SDIFFSTORE:

(3)SINTER:

(4)SINTERSTORE:

(5)SUNION:

(6)SUNIONSTORE:

四、散列:

1、基本命令:

(1)HSET:在散列里面关联起给定的键值对;

(2)HGET:获取指定散列键的值;

(3)HGETALL:获取散列包含的所有键值对

(4)HDEL:如果给定键存在于散列里面,则移除这个键。

(5)HLEN:返回散列包含的键值对数量

redis原理(三)redis命令_第3张图片

2、其他命令:

(1)HMSET:同时将多个 field-value (域-值)对设置到哈希表 key 中。此命令会覆盖哈希表中已存在的域。如果 key 不存在,一个空哈希表被创建并执行 hmset 操作。如果命令执行成功,返回 OK 。当 key 不是哈希表(hash)类型时,返回一个错误。

注意:在官方文档中关于hmset的描述如下:As per Redis 4.0.0, HMSET is considered deprecated. Please use HSET in new code.(根据Redis 4.0.0,HMSET被视为已弃用。请在新代码中使用HSET。)

hmset key field value [field value …]

(2) HMGET:按照给出顺序返回哈希表 key 中一个或多个域的值。:如果给定的域不存在于哈希表,那么返回一个 nil 值。因为不存在的 key 被当作一个空哈希表来处理,所以对一个不存在的 key 进行 hmget 操作将返回一个只带有 nil 值的表。

hmget key field [field …]

(3) HEXISTS:查看哈希表 key 中给定域 field 是否存在。如果哈希表含有给定域,返回 1 。如果不含有给定域,或 key 不存在,返回 0 。

hexists key field

(4)HKEYS与  hvals: 返回哈希表 key 中的所有域/值。当 key 不存在时,返回一个空表。尽管有HGETALL存在,当散列包含的值非常大时可以像遍历HashMap一样先HKEYS取出所有的key,再根据key使用HGET一个个获取键值,避免一次获取多个大体积的值导致服务器阻塞。

[ hkeys / hvals ] key

redis原理(三)redis命令_第4张图片 

(5)hincrby 与 hincrbyfloat:为哈希表 key 中的域 field 的值加上增量 increment 。hincrby 命令只能增加整数值,而 hincrbyfloat 可以增加小数值。增量也可以为负数,相当于对给定域进行减法操作。如果 key 不存在,一个新的哈希表被创建并执行 hincrby 命令。如果域 field 不存在,那么在执行命令前,域的值被初始化为 0。对一个储存字符串值的域 field 执行 HINCRBY 命令将造成一个错误。

[ hincrby / hincrbyfloat ] key field increment

五、有序集合:

1、(1)ZADD:将一个带有给定分值的成员添加到有序集合里面;

(2)ZRANGE:根据元素在有序排列中所处的位置,从有序集合里面获取多个元素;

(3)ZRANGEBYSCORE:获取有序集合在给定分值范围内的所有元素;

(4)ZREM:如果给定成员存在于有序集合,则移除这个成员;

(5),zcard,zscore,,zrevrange,zrem

redis原理(三)redis命令_第5张图片

redis原理(三)redis命令_第6张图片

你可能感兴趣的:(redis,redis)