String 数据类型
String是redis 最基本的类型,最大能存储512MB 的数据,String类型是二进制安全的,即可以存储任何数据、比如数字、图片、序列化对象等
append——用于为指定的 key 追加值
如果key已经存在并且一个字符串, append命令将value 追加到 key 原来的值的末尾
如果 key 不存在,append 就简单地将给定key 设为 value,就像set key value 一样
set/get/append/strlen/
incr/decr/incrby/decrby
getset
setex
setnx
指定的key 不存在时,为key设置指定的值
小结
1、 set key value
含义: 将字符串值 value 关联到 key。
如果key 已经持有其他值,set 就会覆盖旧值,无视类型
2、setex key seconds value
含义: 将值value 关联到 key ,并将 key 的生存时间设为 seconds(以秒为单位)
如果 key 已经存在,setex 命令将覆盖旧值
返回值:设置成功时返回 OK
当seconds 参数不合法时,返回一个错误
3、setnx key value
含义:将key 的值设为 value ,当且仅当 key 不存在
若给定的 key 已经存在,则 setnx 不做任何动作
setnx 是 [ set if not exists ],(如果不存在,则set)的缩写
返回值:设置成功,返回1
mset/mget/msetnx
List 数据类型
概述:列表的元素类型为string,按照插入顺序排序,在列表的头部或尾部添加元素
lpush/lpushx/lrange
lpop/llen
lrem/lset/lindex/ltrim
linsert
rpush/rpushx/rpop/rpoplpush
Hash 数据类型(散列类型)
概述:hash用于存储对象。可以采用这样的命名方式:对象类别和ID构成键名,使用字段表示对象的属性,而字段值则存储属性值
hset/hget/hdel/hexists/hlen/hsetnx
hincrby
hgetall/hkeys/hvals/hmget/hmset
set 数据类型(无序集合)
概述:无序集合,元素类型为string 类型,元素具有唯一性,不允许存在重复的成员。
sadd/smembers/scard/sismember
sadd key member [member ...]
将一个或多个member 元素加入到集合key当中,已经存在于集合的member元素将被忽略(集合中的元素各不相同
smembers key
返回集合中的所有成员
scard key_name
返回集合的数量。当集合key不存在时返回0
sismember key value
如果成员元素是集合的成员,返回1,如果成员元素不是集合的成员,或 key 不存在,返回0
127.0.0.1:6379> sadd myset a b c
(integer) 3
127.0.0.1:6379> sadd myset a d e
(integer) 2
127.0.0.1:6379> sismember myset a
(integer) 1
127.0.0.1:6379> sismember myset f
(integer) 0
127.0.0.1:6379> smembers myset
1) "d"
2) "e"
3) "b"
4) "c"
5) "a"
127.0.0.1:6379> scard myset
(integer) 5
127.0.0.1:6379>
spop/srem/srandmember/smove
spop key [count]
移除集合中的指定key 的一个或多个随机元素,移除后会返回移除的元素
srem key member1..membern
Redis Srem 命令用于移除集合中的一个或多个成员元素,不存在的成员元素会被忽略。
当key不是一个集合类型,返回一个错误
srandmember key [count]
返回集合中的一个随机元素
小知识
从Redis 2.6版本开始,srandmember 命令接收可选的 count 参数:如果count 为正数,且小于集合基数,那么命令返回一个包含 count 个元素的数组,数组中的元素各不相同。如果 count 大于等于集合基数,那么返回整个集合
如果 count 为负数,那么命令返回一个数组,数组中的元素可能会重复出现多次,而数组的长度为 count 的绝对值。则仅仅返回随机元素,而不对集合进行任何改动
smove
将指定成员 member 元素从 source 集合移动到 destination 集合
smove 是原子性操作
如果 source 集合不存在或不包含指定的member元素,则smove 命令不执行任何操作,仅返回0,否则,member元素从source 集合中被移除,并添加到 destination 集合中去
当destination 集合已经包含member 元素时,smove 命令只是简单地将 source 集合中的 member 元素删除
当source 或 destination 不是集合类型时,返回一个错误
127.0.0.1:6379> sadd myset a b c d
(integer) 4
127.0.0.1:6379> smembers myset
1) "d"
2) "a"
3) "c"
4) "b"
127.0.0.1:6379> srandmember myset
"d"
127.0.0.1:6379> srandmember myset
"d"
127.0.0.1:6379> srandmember myset
"a"
127.0.0.1:6379> spop myset
"c"
127.0.0.1:6379> smembers myset
1) "d"
2) "a"
3) "b"
127.0.0.1:6379> srem myset a f z
(integer) 1
127.0.0.1:6379> smembers myset
1) "d"
2) "b"
127.0.0.1:6379> smembers myset
1) "a"
2) "d"
3) "c"
4) "b"
127.0.0.1:6379> smembers myset2
1) "a"
2) "d"
3) "c"
127.0.0.1:6379> smove myset myset2 b
(integer) 1
127.0.0.1:6379> smembers myset
1) "a"
2) "d"
3) "c"
127.0.0.1:6379> smembers myset2
1) "a"
2) "d"
3) "b"
4) "c"
127.0.0.1:6379> smove myset myset2 a
(integer) 1
127.0.0.1:6379> smembers myset
1) "d"
2) "c"
127.0.0.1:6379> smembers myset2
1) "a"
2) "d"
3) "b"
4) "c"
127.0.0.1:6379> smove myset myset2 a
(integer) 0
127.0.0.1:6379>
Sorted set 数据类型 (zset、有序集合)
概述:
a、有序集合,元素类型为string,元素具有唯一性,不能重复
b、每个元素都会关联一个double类型的分数score(表示权重),可以通过权重的大小排序,元素的score可以相同
zadd/zcard/acount/zrem/zincrby/zscore/zrange/zrank
127.0.0.1:6379> zadd myzset 1 "one"
(integer) 1
127.0.0.1:6379> zadd myzset 2 "two" 3 "three"
(integer) 2
127.0.0.1:6379> zrange myzset 0 -1 withscores
1) "one"
2) "1"
3) "two"
4) "2"
5) "three"
6) "3"
127.0.0.1:6379> zrank myzset one
(integer) 0
127.0.0.1:6379> zrank myzset two
(integer) 1
127.0.0.1:6379> zrank myzset four
(nil)
127.0.0.1:6379> zcard myzset
(integer) 3
127.0.0.1:6379> zcount myzset 1 2
(integer) 2
127.0.0.1:6379>
127.0.0.1:6379> zrem myzset one two
(integer) 2
127.0.0.1:6379> zrand myzset 0 -1
(error) ERR unknown command `zrand`, with args beginning with: `myzset`, `0`, `-1`,
127.0.0.1:6379>
127.0.0.1:6379> zrange myzset 0 -1
1) "three"
127.0.0.1:6379> zscore myzset three
"3"
127.0.0.1:6379> zscore myzset two
(nil)
127.0.0.1:6379> zincrby myzset 2 two
"2"
127.0.0.1:6379> zincrby myzset -1 two
"1"
127.0.0.1:6379> zincrby myzset 1 two
"2"
127.0.0.1:6379> zrange myzset 0 -1 withscores
1) "two"
2) "2"
3) "three"
4) "3"
zrangebyscore/zremrangebyrank/zremrangebyscore
127.0.0.1:6379> zadd myzset 1 one 2 two 3 three 4 four
(integer) 4
127.0.0.1:6379> zrangebyscore myzset 1 3
1) "one"
2) "two"
3) "three"
127.0.0.1:6379> zrangebyscore myzset (1 3
1) "two"
2) "three"
127.0.0.1:6379> zrangebyscore myzset -inf +inf limit 2 3
1) "three"
2) "four"
127.0.0.1:6379> zrangebyscore myzset 0 3 limit 2 3
1) "three"
127.0.0.1:6379>
127.0.0.1:6379> zremrangebyscore myzset 1 2
(integer) 2
127.0.0.1:6379> zrange myzset 0 -1
1) "three"
2) "four"
zrevrange/zrevrangebyscore/zrevrank
127.0.0.1:6379> zadd myzset 1 one 2 two 3 three 4 four
(integer) 4
127.0.0.1:6379> zrevrange myzset 0 -1 withscores
1) "four"
2) "4"
3) "three"
4) "3"
5) "two"
6) "2"
7) "one"
8) "1"
127.0.0.1:6379> zrevrange myzset 1 3
1) "three"
2) "two"
3) "one"
127.0.0.1:6379> zrevrank myzset one
(integer) 3
127.0.0.1:6379> zrevrank myzset four
(integer) 0
127.0.0.1:6379> zrevrangebyscore myzset 3 0
1) "three"
2) "two"
3) "one"
127.0.0.1:6379> zrevrangebyscore myzset 4 0 limit 1 2
1) "three"
2) "two"
127.0.0.1:6379> zrevrangebyscore myzset +inf -inf limit 1 2
1) "three"
2) "two"
127.0.0.1:6379>