前面已经简单介绍过了,这次直接看一下其怎么用
string
append:往string末尾追加值,返回追加后的string长度
strlen:查看string的长度
redis 127.0.0.1:6379[2]> set k1 lq
OK
redis 127.0.0.1:6379[2]> append k1 jkl
(integer) 5
redis 127.0.0.1:6379[2]> get k1
"lqjkl"
redis 127.0.0.1:6379[2]> strlen k1
(integer) 5
这一组一定要是存的是数字才能进行加减,并且都是返回得到的结果
Incr:key的值加1
decr:key的值减1
incrby:key的值加指定数
decrby:key的值减指定数
redis 127.0.0.1:6379[2]> set k4 2
OK
redis 127.0.0.1:6379[2]> INCR k4
(integer) 3
redis 127.0.0.1:6379[2]> INCR k4
(integer) 4
redis 127.0.0.1:6379[2]> DECR k4
(integer) 3
redis 127.0.0.1:6379[2]> INCRBY k4 5
(integer) 8
redis 127.0.0.1:6379[2]> DECRBY k4 3
(integer) 5
getrange:获取指定区间范围内的值,类似between…and的关系,从零到负一表示全部
setrange:设置指定区间范围内的值,格式是setrange key值 具体值,这个会覆盖值
redis 127.0.0.1:6379[2]> get k1
"lqjkl"
redis 127.0.0.1:6379[2]> GETRANGE k1 0 3
"lqjk"
redis 127.0.0.1:6379[2]> SETRANGE k1 1 980
(integer) 5
redis 127.0.0.1:6379[2]> get k1
"l980l"
setex:指定的 key 设置值及其过期时间。如果 key 已经存在, SETEX 命令将会替换旧的值。
格式:setex 键 秒值 真实值
setnx:只有在 key 不存在时设置 key 的值。
redis 127.0.0.1:6379[2]> SETEX k5 10 v5
OK
redis 127.0.0.1:6379[2]> ttl k5
(integer) 6
redis 127.0.0.1:6379[2]> ttl k5
(integer) -1
redis 127.0.0.1:6379[2]>
redis 127.0.0.1:6379[2]> keys *
1) "k4"
2) "k3"
3) "k1"
redis 127.0.0.1:6379[2]> SETNX k4 v4
(integer) 0
redis 127.0.0.1:6379[2]> get k4
"5"
mset:同时设置一个或多个 key-value 对。
mget:获取所有(一个或多个)给定 key 的值。
msetnx:同时设置一个或多个 key-value 对,当且仅当所有给定 key 都不存在。
redis 127.0.0.1:6379[2]> MSET k5 v5 k6 v6 k7 v7
OK
redis 127.0.0.1:6379[2]> MGET k5 k6 k7
1) "v5"
2) "v6"
3) "v7"
redis 127.0.0.1:6379[2]> keys *
1) "k4"
2) "k6"
3) "k1"
4) "k5"
5) "k7"
6) "k3"
redis 127.0.0.1:6379[2]> MSETNX k8 v8 k9 v9
(integer) 1
redis 127.0.0.1:6379[2]> MSETNX k8 vv k10 v10
(integer) 0
getset:将给定 key 的值设为 value ,并返回 key 的旧值(old value)。
简单一句话,先get然后立即set
redis 127.0.0.1:6379[2]> get k8
"v8"
redis 127.0.0.1:6379[2]> GETSET k8 vv
"v8"
redis 127.0.0.1:6379[2]> get k8
"vv"
###List
lpush:命令将一个或多个值插入到列表头部。 如果 key 不存在,一个空列表会被创建并执行 LPUSH 操作。 当 key 存在但不是列表类型时,返回一个错误。
rpush:命令将一个或多个值插入到列表尾部。 如果 key 不存在,一个空列表会被创建并执行 LPUSH 操作。 当 key 存在但不是列表类型时,返回一个错误。
lrange:返回列表中指定区间内的元素,区间以偏移量 START 和 END 指定。 其中 0 表示列表的第一个元素, 1 表示列表的第二个元素,以此类推。 你也可以使用负数下标,以 -1 表示列表的最后一个元素, -2 表示列表的倒数第二个元素,以此类推。
redis 127.0.0.1:6379[2]> LPUSH list 1 2 3
(integer) 3
redis 127.0.0.1:6379[2]> LRANGE list 0 -1
1) "3"
2) "2"
3) "1"
redis 127.0.0.1:6379[2]> RPUSH list 4 5
(integer) 5
redis 127.0.0.1:6379[2]> LRANGE list 0 -1
1) "3"
2) "2"
3) "1"
4) "4"
5) "5"
lpop:命令用于移除并返回列表的第一个元素。
rpop:命令用于移除并返回列表的最后一个元素。
lindex:通过索引获取列表中的元素(并不会移除该元素) 。格式:lindex key index
llen:获取该列表长度
redis 127.0.0.1:6379[2]> lpop list
"3"
redis 127.0.0.1:6379[2]> LRANGE list 0 -1
1) "2"
2) "1"
3) "4"
4) "5"
redis 127.0.0.1:6379[2]> rpop list
"5"
redis 127.0.0.1:6379[2]> LRANGE list 0 -1
1) "2"
2) "1"
3) "4"
redis 127.0.0.1:6379[2]> LINDEX list 1
"1"
redis 127.0.0.1:6379[2]> LRANGE list 0 -1
1) "2"
2) "1"
3) "4"
redis 127.0.0.1:6379[2]> LLEN list
(integer) 3
Lrem:根据参数 COUNT 的值,移除列表中与参数 VALUE 相等的元素。即从头往尾删除2个值等于v1的元素,返回的值为实际删除的数量,如果l列表不存在返回0
注意:LREM list3 0 值,表示删除全部给定的值。零个就是全部值
redis 127.0.0.1:6379[2]> RPUSH list 1 1 2 3 3 4 4 4 5 5
(integer) 13
redis 127.0.0.1:6379[2]> LRANGE list 0 -1
1) "2,"
2) "1,"
3) "4,"
4) "1"
5) "1"
6) "2"
7) "3"
8) "3"
9) "4"
10) "4"
11) "4"
12) "5"
13) "5"
redis 127.0.0.1:6379[2]> LREM list 2 1
(integer) 2
redis 127.0.0.1:6379[2]> LRANGE list 0 -1
1) "2,"
2) "1,"
3) "4,"
4) "2"
5) "3"
6) "3"
7) "4"
8) "4"
9) "4"
10) "5"
11) "5"
Ltrim:截取指定索引区间的元素在赋值给key,格式是ltrim list的key 起始索引 结束索引
redis 127.0.0.1:6379[2]> LRANGE list 0 -1
1) "2,"
2) "1,"
3) "4,"
4) "2"
5) "3"
6) "3"
7) "4"
8) "4"
9) "4"
10) "5"
11) "5"
redis 127.0.0.1:6379[2]> LTRIM list 1 3
OK
redis 127.0.0.1:6379[2]> LRANGE list 0 -1
1) "1,"
2) "4,"
3) "2"
rpoplpush:移除列表的最后一个元素,并将该元素添加到另一个列表头部并返回
redis 127.0.0.1:6379[2]> LRANGE list 0 -1
1) "1,"
2) "4,"
3) "2"
redis 127.0.0.1:6379[2]> RPUSH list2 7 8 9
(integer) 3
redis 127.0.0.1:6379[2]> LRANGE list2 0 -1
1) "7"
2) "8"
3) "9"
redis 127.0.0.1:6379[2]> RPOPLPUSH list list2
"2"
redis 127.0.0.1:6379[2]> LRANGE list 0 -1
1) "1,"
2) "4,"
redis 127.0.0.1:6379[2]> LRANGE list2 0 -1
1) "2"
2) "7"
3) "8"
4) "9"
lset:将列表 key 下标为index的元素的值设置为 value 。
格式:LSET key index value
当 index 参数超出范围,或对一个空列表( key 不存在)进行 LSET 时,返回一个错误。
redis 127.0.0.1:6379[2]> LRANGE list 0 -1
1) "1,"
2) "4,"
redis 127.0.0.1:6379[2]> LRANGE list2 0 -1
1) "2"
2) "7"
3) "8"
4) "9"
redis 127.0.0.1:6379[2]> lset list2 0 6
OK
redis 127.0.0.1:6379[2]> LRANGE list2 0 -1
1) "6"
2) "7"
3) "8"
4) "9"
linsert:命令用于在列表的元素前或者后插入元素。当指定元素不存在于列表中时,不执行任何操作。
当列表不存在时,被视为空列表,不执行任何操作。如果 key 不是列表类型,返回一个错误。
格式: linsert key before/after v1 v2(v2是要插入的值)
redis 127.0.0.1:6379[2]> LRANGE list2 0 -1
1) "6"
2) "7"
3) "8"
4) "9"
redis 127.0.0.1:6379[2]> LINSERT list2 before 6 5
(integer) 5
redis 127.0.0.1:6379[2]> LINSERT list2 after 6 7
(integer) 6
redis 127.0.0.1:6379[2]> LRANGE list2 0 -1
1) "5"
2) "6"
3) "7"
4) "7"
5) "8"
6) "9"
总结:
它是一个字符串链表,left、right都可以插入添加;
如果键不存在,创建新的链表;
如果键已存在,新增内容;
如果值全移除,对应的键也就消失了。
链表的操作无论是头和尾效率都极高,但假如是对中间元素进行操作,效率就很惨淡了。
set
Redis 的 Set 是 String 类型的无序集合。集合成员是唯一的,这就意味着集合中不能出现重复的数据。
Redis 中集合是通过哈希表实现的,所以添加,删除,查找的复杂度都是 O(1)。
集合中最大的成员数为 232 - 1 (4294967295, 每个集合可存储40多亿个成员)。
sadd:命令将一个或多个成员元素加入到集合中,已经存在于集合的成员元素将被忽略。假如集合 key 不存在,则创建一个只包含添加的元素作成员的集合。当集合 key 不是集合类型时,返回一个错误。
smembers:命令返回集合中的所有的成员。 不存在的集合 key 被视为空集合。
sismember:命令判断成员元素是否是集合的成员。是的话返回1,否返回0。
scard:获取集合里面的元素个数.
redis 127.0.0.1:6379[1]> sadd set1 1 2 3 4 5
(integer) 5
redis 127.0.0.1:6379[1]> smembers set1
1) "1"
2) "2"
3) "3"
4) "4"
5) "5"
redis 127.0.0.1:6379[1]> SISMEMBER set1 1
(integer) 1
redis 127.0.0.1:6379[1]> SISMEMBER set1 7
(integer) 0
redis 127.0.0.1:6379[1]> scard set1
(integer) 5
srem key n:删除集合中元素n
srandmember key n:从集合里随机取出n个数,如果超过最大数量就全部取出,如果写的值是负数,比如,表示需要取出个,但是可能会有重复值
redis 127.0.0.1:6379[1]> srem set1 5
(integer) 1
redis 127.0.0.1:6379[1]> SMEMBERS set1
1) "1"
2) "2"
3) "3"
4) "4"
redis 127.0.0.1:6379[1]> SRANDMEMBER set1 2
1) "3"
2) "1"
redis 127.0.0.1:6379[1]> SRANDMEMBER set1 2
1) "4"
2) "3"
spop key :随机出栈
smove key1 key2 在key1里某个值: 作用是将key1里的某个值赋给key2
redis 127.0.0.1:6379[1]> spop set1
"3"
redis 127.0.0.1:6379[1]> SMEMBERS set1
1) "1"
2) "2"
3) "4"
redis 127.0.0.1:6379[1]> sadd set2 1 2 3
(integer) 3
redis 127.0.0.1:6379[1]> smove set2 set1 3
(integer) 1
redis 127.0.0.1:6379[1]> SMEMBERS set1
1) "1"
2) "2"
3) "3"
4) "4"
redis 127.0.0.1:6379[1]> SMEMBERS set2
1) "1"
2) "2"
sdiff(差集):返回在第一个set里面而不在后面任何一个set里面的项
sinter(交集):返回两个set里共有的
sunion(并集):返回两个集合全部(去重)
redis 127.0.0.1:6379[1]> SMEMBERS set1
1) "1"
2) "2"
3) "3"
4) "4"
redis 127.0.0.1:6379[1]> SMEMBERS set2
1) "1"
2) "2"
redis 127.0.0.1:6379[1]> SDIFF set1 set2
1) "3"
2) "4"
redis 127.0.0.1:6379[1]> SINTER set1 set2
1) "1"
2) "2"
redis 127.0.0.1:6379[1]> SUNION set1 set2
1) "1"
2) "2"
3) "3"
4) "4"
hash
Redis hash 是一个string类型的field和value的映射表,其value也是一个k-v结构。hash特别适合用于存储对象。Redis 中每个 hash 可以存储 232 - 1 键值对(40多亿)。
hset:存单个值
hget:取单个值
hmset:存多个值
hmget:取多个值
hgetall:取所有键值对
hdel:删除哈希表 key 中的一个或多个指定域,不存在的域将被忽略。
hlen:获取哈希表中键值对数量
redis 127.0.0.1:6379[3]> hset user name lake
(integer) 1
redis 127.0.0.1:6379[3]> hget user name
"lake"
redis 127.0.0.1:6379[3]> hmset user age 20 add gz
OK
redis 127.0.0.1:6379[3]> hmget user name age add
1) "lake"
2) "20"
3) "gz"
redis 127.0.0.1:6379[3]> hgetall user
1) "name"
2) "lake"
3) "age"
4) "20"
5) "add"
6) "gz"
redis 127.0.0.1:6379[3]> hlen user
(integer) 3
redis 127.0.0.1:6379[3]> hdel user age add
(integer) 2
redis 127.0.0.1:6379[3]> hgetall user
1) "name"
2) "lake"
hexists key k1 :判断key中是否存在k1这个key,存在返回1,否则返回0
hkeys key:返回key中所有key
hvals key:返回key中所有values
hincrby key k1 n:为key中的k1的值加上n,n只能为整数
hincrbyfloat key k1 f :为key中的k1的值加上f,f为小数
hsetnx:为哈希表中不存在的key赋值,如果key已经存在,则操作无效
redis 127.0.0.1:6379[3]> hgetall user
1) "name"
2) "lake"
redis 127.0.0.1:6379[3]> hexists user name
(integer) 1
redis 127.0.0.1:6379[3]> hexists user age
(integer) 0
redis 127.0.0.1:6379[3]> hset user age 20
(integer) 1
redis 127.0.0.1:6379[3]> hkeys user
1) "name"
2) "age"
redis 127.0.0.1:6379[3]> hvals user
1) "lake"
2) "20"
redis 127.0.0.1:6379[3]> hincrby user age 2
(integer) 22
redis 127.0.0.1:6379[3]> HINCRBYFLOAT user age 0.5
"22.5"
redis 127.0.0.1:6379[3]> hsetnx user add gz
(integer) 1
redis 127.0.0.1:6379[3]> hgetall user
1) "name"
2) "lake"
3) "age"
4) "22.5"
5) "add"
6) "gz"
redis 127.0.0.1:6379[3]> hsetnx user age 20
(integer) 0
redis 127.0.0.1:6379[3]> hgetall user
1) "name"
2) "lake"
3) "age"
4) "22.5"
5) "add"
6) "gz"
zset
在set基础上,加一个score值。
之前set是k1 v1 v2 v3,
现在zset是k1 score1 v1 score2 v2
zadd:添加元素
zrange:根据范围取出元素,添加上withscores则会将score一起返回
zrangebyscore key 开始score 结束score limit 2 2:根据score取出元素,添加上withscores则会将score一起返回,如果在开始score前添加上(,表示这个数不包含在内,limit的作用是限制返回,意思是从返回值中下标2开始截取2个
redis 127.0.0.1:6379[5]> zadd zset1 60 v1 70 v2 80 v3 90 v4 100 v5
(integer) 5
redis 127.0.0.1:6379[5]> zrange zset 0 -1
(empty list or set)
redis 127.0.0.1:6379[5]> zrange zset1 0 -1
1) "v1"
2) "v2"
3) "v3"
4) "v4"
5) "v5"
redis 127.0.0.1:6379[5]> zrange zset1 0 -1 withscores
1) "v1"
2) "60"
3) "v2"
4) "70"
5) "v3"
6) "80"
7) "v4"
8) "90"
9) "v5"
10) "100"
redis 127.0.0.1:6379[5]> ZRANGEBYSCORE zset1 60 (90 withscores limit 2 2
1) "v3"
2) "80"
redis 127.0.0.1:6379[5]> ZRANGEBYSCORE zset1 60 (90 withscores
1) "v1"
2) "60"
3) "v2"
4) "70"
5) "v3"
6) "80"
zrem key n:作用是删除key中的n元素
zcard key:作用是获取key中的元素个数
zcount key s1 s2:获取key中s1,s2这个score区间元素个数
zrank key v:返回key中v的排名(升序)
redis 127.0.0.1:6379[5]> zrem zset1 v5
(integer) 1
redis 127.0.0.1:6379[5]> zrange zset1 0 -1
1) "v1"
2) "v2"
3) "v3"
4) "v4"
redis 127.0.0.1:6379[5]> zcard zset1
(integer) 4
redis 127.0.0.1:6379[5]> zcount zset1 60 90
(integer) 4
redis 127.0.0.1:6379[5]> zcount zset1 60 80
(integer) 3
zrevrank key v:在降序状态下获取v的下标值(降序排名)
zrevrange key:降序状态下根据范围取出元素
zrevrangebyscore key 结束score 开始score:降序根据score输出
redis 127.0.0.1:6379[5]> zrevrank zset1 v2
(integer) 2
redis 127.0.0.1:6379[5]> zrevrange key 0 2
(empty list or set)
redis 127.0.0.1:6379[5]> zrevrange zset1 0 2
1) "v4"
2) "v3"
3) "v2"
redis 127.0.0.1:6379[5]> zrevrangebyscore zset1 80 60
1) "v3"
2) "v2"
3) "v1"