1. string 类型及操作;
- 什么是 string 类型
- 是最简单的类型(一个 key 对应一个 value),是二进制安全的
- Redis 中的 string 可以包含任何数据,比如 jpeg 格式的图片,或者序列化的对象
- 从内部实现机制来看,string 是有自己的最大上限的。最大上限是 512 MB
序号 | 命令 | 格式 | 解释 |
---|
1 | set | set key value | 设置指定 key 的值 |
2 | get | get key | 获取指定 key 的值 |
3 | getrange | getrange key start end | 返回 key 中字符串值得字符集 |
4 | getset | getset key value | 将给定的 key 值设置为 value,并返回 key 的旧值(old value) |
5 | getbit | getbit key offset | 对 key 所储存的字符串值,获取指定偏移量上的位(bit)。 |
6 | mget | mget key1 [key2…] | 获取所有(一个或多个)给定 key 的值。 |
7 | setbit | setbit key offset value | 对 key 所储存的字符串值,设置或清除指定偏移量上的位(bit)。 |
8 | setex | setex key seconds value | 将值 value 关联到 key ,并将 key 的过期时间设为 seconds (以秒为单位)。 |
9 | setnx | setnx key value | 只有在 key 不存在时设置 key 的值。 |
10 | setrange | setrange key offset value | 用 value 参数覆写给定 key 所储存的字符串值,从偏移量 offset 开始。 |
11 | strlen | strlen key | 返回 key 所储存的字符串值的长度。 |
12 | mset | mset key value [key2 value2…] | 同时设置一个或多个 key-value 对。 |
13 | msetnx | msetnx key value [key2 value2…] | 同时设置一个或多个 key-value 对,当且仅当所有给定 key 都不存在。 |
14 | psetex | psetex key milliseconds value | 这个命令和 setex 命令相似,但它以毫秒为单位设置 key 的生存时间,而不是像 setex 命令那样,以秒为单位。 |
15 | incr | incr key | 将 key 中储存的数字值增一。 |
16 | incrby | incrby key increment | 将 key 所储存的值加上给定的增量值。 |
17 | incrbyfloat | incrbyfloat key increment | 将 key 所储存的值加上给定的浮点增量值。 |
18 | decr | decr key | 将 key 中储存的数字值减一。 |
19 | decrby | decrby key increment | key 所储存的值减去给定的减量值。 |
20 | append | append key value | 如果 key 已经存在并且是一个字符串, append 命令将 value 追加到 key 原来的值的末尾。 |
set name wdm
get name
get keys
setnx name xiaoming
mset key1 xiaohong key2 xiaozhang key3 xiaoxiao
get key1
get key2
get key3
msetnx key2 xiaowang key4 xiaozhang
get key2
get key4
get name
getset name www
get name
get key5
getset key5 sanzhangpi
get key5
mget key1 key2 key6
1) "xiaohong"
2) "xiaozhang"
3) (nil)
setex haircolor 10 red
get haircolor
get haircolor
get name
strlen name
get name
setrange name 1 dm
get name
set email huaxx@csdn.net
getrange email 5 100
getrange email -9 -1
set age 20
incr age
get age
incrby age 5
get age
incrby key7
get key7
incr key7
get key7
set myage 20.65
incrbyfloat myage 0.25
get age
decr age
decrby age 10
get name
append name @csdn.com
get name
set andy a
get andy
setbit andy 6 1
setbit andy 7 0
get andy
2. list 类型及操作;
- 什么是 list 类型
- list 是一个链表结构,主要功能是 push、pop、获取一定范围内的所有值等等
- 操作中,key 可以理解为链表的名字,可以通过 push、pop 操作从链表的头部或者尾部进行添加或者是删除元素
- 这使得 list 既可以作为栈、也可以作为队列进行操作
序号 | 命令 | 格式 | 解释 |
---|
1 | lpush | lpush key value | 将一个或多个值插入到已存在的列表头部 |
2 | rpush | rpush key value | 在列表中添加一个或多个值 |
3 | linsert | linsert key before / after pivot value | 在列表的元素前或后插入元素 |
4 | lset | lset key index value | 通过索引设置列表元素的值 |
5 | lrem | lrem key count value | 移除列表元素 |
6 | ltrim | ltrim key start stop | 对一个列表进行修剪(trim),列表仅保留指定区域内的元素 |
7 | lrange | lrange key start stop | 获取列表中的某一片段 |
8 | lpop | lpop key | 移出并获取列表的第一个元素 |
9 | rpop | rpop key | 移除并获取列表最后一个元素 |
10 | rpoplpush | rpoplpush source destination | 移除列表的最后一个元素,并将该元素添加到另外一个列表并返回 |
11 | lindex | lindex key index | 通过索引获取列表的元素 |
12 | llen | llen key | 获取列表长度 |
lpush mylist world
lpush mylist hello
lrange mylist 0 -1
1) "hello"
2) "world"
rpush mylist2 hello
rpush mylist2 world
lrange mylist2 0 -1
1) "hello"
2) "world"
lrange mylist2 0 -1
1) "hello"
2) "world"
lrange mylist2 1 0
rpush mylist3 one
rpush mylist3 three
linsert mylist3 before three two
lrange mylist3 0 -1
1) "one"
2) "two"
3) "three"
rpush mylist4 one two three
lset mylist4 0 four
lset mylist4 -2 five
lrange mylist4 0 -1
1) "four"
2) "five"
3) "three"
rpush mylist5 one one three four
lrem mylist5 2 one
lrange mylist5 0 -1
1) "three"
2) "four"
rpush mylist6 hello hello world hello
lrem mylist6 -2 hello
lrange mylist6 0 -1
1) "hello"
2) "world"
rpush mylist7 hello hello world hello
lrem mylist7 0 hello
lrange mylist7 0 -1
lrange mylist 0 -1
1) "hello"
2) "world"
lpop mylist
lrange mylist 0 -1
lrange mylist2 0 -1
1) "hello"
2) "world"
rpop mylist2
lrange mylist2 0 -1
lrange mylist5 0 -1
1) "three"
2) "four"
lrange mylist6 0 -1
1) "hello"
2) "world"
rpoplpush mylist5 mylist6
lrange mylist6 0 -1
1) "four"
2) "hello"
3) "world"
lrange mylist6 0 -1
1) "four"
2) "hello"
3) "world"
lindex mylist6 0
lindex mylist6 1
lindex mylist6 2
llen mylist6
3. hash 类型及操作;
- 什么是 hash 类型
- 是一个 string 类型的 field 和 value 的映射表,特别适用于存储对象
- 将一个对象存储于 hash 类型中,会占用更少的内存,并且可以更方便的存取整个对象
- 节省内存的原因是,新建一个 hash 对象,开始用的是 zipmap 来存储,zipmap 并不是 hash table,只有 field 和value 的大小超过一定限制的时候,Redis才会将内部的 zipmap 替换成正常的 hash
序号 | 命令 | 格式 | 解释 |
---|
1 | hset | hset key field value | 将哈希表中key中的字段field的值设为value |
2 | hget | hget key field | 获取存储在哈希表中指定字段的值 |
3 | hmget | hmget key filed1 … fieldN | 获取所有给定字段的值 |
4 | hmset | hmset key field1 value1 … fieldN valueN | 同时设置到哈希表中多个 field |
5 | hincrby | hincrby key filed increment | 为哈希表 key 中指定字段加上给定值 |
6 | hexists | hexists key key field | 查看哈希表 key 中是否存在指定的 key |
7 | hdel | hdel key field | 删除一个或多个哈希字段 |
8 | hlen | hlen key | 获取哈希表中字段的数量 |
9 | hkeys | hkeys key | 获取所有哈希表中的字段 |
10 | hvals | hvals key | 获取哈希表中所有的值 |
11 | hgetall | hgetall key | 获取哈希表中指定key的所有字段和值 |
hset mycar type bmw
hget mycar type
hmset mycar height 1500 price secret
hmget mycar type height price
1) "bmw"
2) "1500"
3) "secret"
hset mycar power 20
hget mycar power
hincrby mycar power -8
hget mycar power
hexists mycar type
hexists mycar color
hlen mycar
hkeys mycar
1) "type"
2) "height"
3) "price"
4) "power"
hvals mycar
1) "bmw"
2) "1500"
3) "secret"
4) "12"
hgetall mycar
1) "type"
2) "bmw"
3) "height"
4) "1500"
5) "price"
6) "secret"
7) "power"
8) "12"
hdel mycar type
4. sets 类型及操作;
- 什么是 sets 类型
- sets 是集合
- 对于集合的操作有:添加元素、删除元素
- 也可以对集合进行:求交集、并集、差集
- 操作中的 key 可以理解为集合的名字
序号 | 命令 | 格式 | 解释 |
---|
1 | sadd | sadd key member1 [member2] | 向集合中添加一个或多个成员 |
2 | srem | srem key member1 [member2] | 删除集合中一个或多个成员 |
3 | smembers | smembers key | 返回集合中所有成员 |
4 | spop | spop key | 移除并返回集合中的一个随机元素 |
5 | sdiff | sdiff key1 [key2] | 返回给定所有集合的差集 |
6 | sdiffstore | sdiffstore destination key1 [key2] | 返回给定所有集合的差集并存储在 destination 中 |
7 | sinter | sinter key1 [key2] | 返回给定所有集合的交集 |
8 | sinterstore | sinterstore destination key1 [key2] | 返回给定集合的交集并存储在 destination 中 |
9 | sunion | sunion key1 [key2] | 返回所有给定集合的并集 |
10 | sunionstore | sunionstore destination key1 [key2] | 所有给定集合的并集存储在 destination 集合中 |
11 | smove | smove source destination member | 将 member 元素从 source 集合移动到 destination 集合 |
12 | scard | scard key | 获取集合的成员数 |
13 | sismember | sismember key member | 判断 member 元素是否都是集合key的成员 |
14 | srandmember | srandmember key [count] | 返回集合中一个或多个随机数 |
sadd myset hello
sadd myset world
sadd myset world
smembers myset
1) "world"
2) "hello"
sadd myset2 one two three
srem myset2 one four
smembers myset2
1) "three"
2) "two"
sadd myset3 one two three
spop myset3
spop myset3
smembers myset3
smembers myset2
1) "three"
2) "two"
smembers myset3
1) "one"
sdiff myset2 myset3
1) "three"
2) "two"
sadd myset3 two
smembers myset3
1) "two"
2) "one"
smembers myset2
1) "three"
2) "two"
sdiff myset2 myset3
sdiff myset3 myset2
smembers myset2
1) "three"
2) "two"
smembers myset3
1) "two"
2) "one"
sdiffstore myset4 myset2 myset3
smembers myset4
smembers myset2
1) "three"
2) "two"
smembers myset3
1) "two"
2) "one"
sinter myset2 myset3
smembers myset2
1) "three"
2) "two"
smembers myset3
1) "two"
2) "one"
sinterstore myset5 myset2 myset3
smembers myset5
smembers myset2
1) "three"
2) "two"
smembers myset3
1) "two"
2) "one"
sunion myset2 myset3
1) "three"
2) "one"
3) "two"
smembers myset2
1) "three"
2) "two"
smembers myset3
1) "two"
2) "one"
sunionstore myset6 myset2 myset3
smembers myset6
1) "three"
2) "one"
3) "two"
smembers myset2
1) "three"
2) "two"
smembers myset3
1) "two"
2) "one"
smove myset2 myset7 three
smembers myset2
smembers myset7
scard myset2
smembers myset2
sismember myset2 two
sismember myset2 three
smembers myset3
1) "two"
2) "one"
srandmember myset3
srandmember myset3
5. zsets 类型及操作。
- 什么是 zsets 类型
- 也叫 sorted sets。是 sets 的升级版本。它在 sets 的基础上增加了一个顺序属性。
- 这一属性在添加修改元素的时候可以指定。每次指定之后 zsets 会重新排序。操作中 key 可以理解为 zsets 的名字。
- zsets 最常用的使用方式是作为索引来使用。
- 可以把要排序的字段作为 score 存储,对象的id作为元素存储。
序号 | 命令 | 格式 | 解释 |
---|
1 | zadd | zadd key score member | 添加元素到集合,若元素在集合中存在则更新对应的score |
2 | zrem | zrem key member | 删除制定元素,1表示成功,如元素不存在则返回0 |
3 | zincrby | zincrby key incr member | 有序集合中对指定成员的score增加对应增量,返回更新后的socre值 |
4 | zrank | zrank key member | 返回有序集合中指定成员的索引 |
5 | zrevrank | zrevrank key member | 返回有序集合中指定成员的排名,有序集成员按分数值递减排序 |
6 | zrange | zrange key start end | 通过索引区间返回有序集合成指定区域内的成员 |
7 | zrevrange | zrevrange key start end | 通过索引区间返回有序集合成指定区域内的成员 |
8 | zrangebyscore | zrangebyscore key min max | 通过分数返回有序集合制定区间内的成员 |
9 | zcount | zcount key min max | 计算在有序集合中指定区间分数的成员数 |
10 | zcard | zcard key | 获取有序集合的成员数 |
11 | zscore | zscore key element | 返回有序集合中,成员的分数值 |
12 | zremrangebyrank | zremrangebyrank key min max | 移除有序集合中给定的排名区间的所有成员 |
13 | zremrangebyscore | zremrangebyscore key min max | 移除有序集合中给定的分数区间的所有成员 |
zadd myzset 1 one
zadd myzset 2 two
zadd myzset 3 two
zrange myzset 0 -1
1) "one"
2) "two"
zrange myzset 0 -1 withscores
1) "one"
2) "1"
3) "two"
4) "3"
zrem myzset two
zrange myzset 0 -1 withscores
1) "one"
2) "1"
zadd myzset2 1 one
zadd myzset2 2 two
zincrby myzset2 2 one
zrange myzset2 0 -1 withscores
1) "two"
2) "2"
3) "one"
4) "3"
zadd myzset3 1 one
zadd myzset3 2 two
zadd myzset3 3 three
zadd myzset3 4 four
zadd myzset3 5 five
zrank myzset3 three / / 返回 (integer) 2。这里的 2 是指 three 元素对应的 score 的从小到大排序的下标
zadd salary 3500 peter
zadd salary 4000 tom
zadd salary 4500 jack
zrange salary 0 -1 withscores
1) "peter"
2) "3500"
3) "tom"
4) "4000"
5) "jack"
6) "4500"
zrank salary peter
zrevrank salary tom
zrange salary 0 -1 withscores
1) "peter"
2) "3500"
3) "tom"
4) "4000"
5) "jack"
6) "4500"
zrevrange salary 0 -1 withscores
1) "jack"
2) "4500"
3) "tom"
4) "4000"
5) "peter"
6) "3500"
zrange salary 0 -1 withscores
1) "peter"
2) "3500"
3) "tom"
4) "4000"
5) "jack"
6) "4500"
zrangebyscore salary 4000 5000 withscores
1) "tom"
2) "4000"
3) "jack"
4) "4500"
zrange salary 0 -1 withscores
1) "peter"
2) "3500"
3) "tom"
4) "4000"
5) "jack"
6) "4500"
zcount salary 3000 5000
zrange salary 0 -1
1) "peter"
2) "tom"
3) "jack"
zcard salary
zrange salary 0 -1 withscores
1) "peter"
2) "3500"
3) "tom"
4) "4000"
5) "jack"
6) "4500"
zscore salary tom
zrange salary 0 -1 withscores
1) "peter"
2) "3500"
3) "tom"
4) "4000"
5) "jack"
6) "4500"
zremrangebyrank salary 0 1
zrange salary 0 -1 withscores
1) "jack"
2) "4500"
zadd salary 2000 tom
zadd salary 2500 jack
zadd salary 3000 peter
zrange salary 0 -1 withscores
1) "tom"
2) "2000"
3) "jack"
4) "2500"
5) "peter"
6) "3000
zremrangebyscore salary 2000 2500 # 返回 (integer) 1
zrange salary 0 -1 withscores # 返回
1) "peter"
2) "3000