Redis 数据类型
Redis 支持五种数据类型:string(字符串)、list(列表)、hash(哈希)、set(集合)和 zset(有序集合),接下来我们讲解分别讲解一下这五种类型的的使用。
String(字符串)
string 类型是 redis 最基本的类型,很多人说如果去除本地持久化,只使用 string 的话,那 redis 就是一个 memcached。string 类型,一个 key 对应一个 value,一个 value 最大能存储512MB的数据。string 类型是二进制安全的,这也意味着 string 类型可以包含任何数据,常用命令如下:
序号 | 命令 | 描述 |
1 | set key value | 为指定键设置值(例:set name luofei) |
2 | get key | 获取指定键的值(例:get name) |
3 | getrange key strat end | 截取指定位置的键字符串(例:getrange name 0 2) |
4 | getset key value | 给字符串重新赋值,并返回旧结果(例:getset name krockey) |
5 | getbit key offset | 获取字符串的值的偏移(例:getbit name 4) |
6 | mget key1[key2..] | 得到所有的字符串的值(例:mget name age) |
7 | setbit key offset value | 设置字符串偏移(例:setbit name 0 1) |
8 | setrange key offset value | 从指定偏移位置覆盖字符串(例:setrange name 3 aaaa) |
9 | mset key value[key value..] | 批量设置键值(例:mset age 18 sex male) |
10 | msetnx key value[key value..] | 批量设置多个不存在的键值(例如:msetnx country chinese address shanghai) |
11 | incr key | 递增值,值只能为整数(例:incr count) |
12 | decr key | 递减值,值只能为整数(例:decr count) |
13 | decrby key decrement | 减少指定的值(例:decrby count 10) |
14 | append key value | 在指定值后追加字符串(例:append name maska) |
Hash(哈希)
hash 是一个键值对集合,所以它特别适合存储对象,常用命令如下:
序 号 | 命令 | 描述 |
1 | hdel key field[field2..] | 删除一个或多个哈希字段(例:hdel user age) |
2 | hexists key field | 判断一个哈希字段是否存在(例:hexists user name) |
3 | hget key field | 获取哈希字段中的某个字段的值(例:hget user age) |
4 | hgetall key | 获取存储在哈希中的所有字段和值(例:hgetall user) |
5 | hincrby key field increment | 为哈希中的指定字段增加值(例:hincrby user age 10) |
6 | hkeys key | 获取哈希中的所有字段的名称(例:hkeys user) |
7 | hlen key | 获取哈希中字段的总数(例:hlen user) |
8 | hmget key field[filed2..] | 批量获取哈希中指定字段的名称(例:hmget user name age) |
9 | hmset key field value[field2 value 2] | 批量设置哈希中指定字段的值(例:hmset user name lofei age 18) |
10 | hset key field value | 设置哈希中指定字段的值(例:hset user name lofei) |
11 | hsetnx key field value | 设置哈希中指定字段的值,若字段存在,则不做操作(例:hsetnx user address "this is a address") |
12 | hvals key | 获取哈希中所有的值(例:hvals user) |
List(列表)
Redis list 是一个简单的字符串列表,实际上是一个双向链表,支持反向查找和便利,更加方便,redis 内部的很多实现,如缓冲队列等用的就是这个数据结构,常用命令如下:
序号 | 命令 | 描述 |
1 | blpop key[key2] timeout | 阻塞一定秒数后获取列表中的第一个元素(例:blpop students teachers 1) |
2 | brpop key[key2] timeout | 阻塞一定秒数后获取列表中的最后一个元素(例:brpop students teachers 1) |
3 | brpop push source desination timeout |
阻塞一定秒数后从第一个列表中取出一个值,推到另一个列表中并返回它 (例:brpop push students teachers 0) |
4 | lindex key index | 获取列表中指定位置的元素(例:lindex students 1) |
5 | linsert key before|after pivot value | 在指定元素前或后插入指定的值(例:linsert students before "lucy" "lily") |
6 | llen key | 获取列表的长度(例:llen students) |
7 | lpop key | 获取并取出列表的第一个元素(例:lpop students) |
8 | lpush key value[value2..] | 在列表的前面插入一个或多个值(例:lpush students tomas) |
9 | lpushx key value |
在列表的前面插入一个或多个值,若列表不存在,则不插入任何值 (例:lpushx students ) |
10 | lrange key start stop | 获取列表中的元素区间(例:lrange students 0 5) |
11 | lrem key count value | 从列表中删除指定值的元素(例:lrange students count tom) |
12 | lset key index value | 设置列表中指定索引的值(例:lset students 1 david) |
13 | ltrim key start stop | 截取列表(例:ltrim students 0 2) |
14 | rpop key | 获取并去除列表中的最后一个元素(例:rprop students) |
15 | rproplpush source destination | 获取第一个列表中的最后一个元素并附加到另一个列表中(例:rproplpush students teacher) |
16 | rpush key value[value2..] | 向列表的最后添加一个或多个值(rpush students lintao lilei) |
17 | rpushx key value |
向列表中最后插入一个值,若列表不存在,则不做插入操作 (例:rpushx students madou) |
Set(集合)
Redis 的 Set 是 string 类型的无需集合,实际上是通过 hash 表来实现的,常用命令如下:
序号 | 命令 | 描述 |
sadd key mermber | 向集合添加成员(例:sadd boss mayun) | |
scard key | 获取集合中袁术的个数(例:scard boss) | |
sdiff key1 key2 | 获取在 key1 中不在 key2 中的元素(例:sdiff part1 part2) | |
sdiffstore key key1 key2 | 获取在 key1 中不在 key2 中的元素并存入新的 key 中(例:sdiffstore boss boss1 boss2) | |
sinter key1 key2 | 获取 key1 和 key2 的交集(例:sinter boss1 boss2) | |
sinterstore key key1 key2 | 获取 key1 和 key2 的交集并存入新的 key 中(例:sinterstore boss boss1 boss2) | |
sismeber key value | 判断集合中是否存在指定元素(例:smembers boss mayun) | |
smembers key | 列出集合中的所有元素(例:smembers boss) | |
smove key value | 移除集合中指定的值(例:sremove boss mayun) | |
spop key | 移除并返回集合中的一个随机元素 | |
srandmember key | 返回集合中的一个或多个随机数 | |
srem key member1 member2... | 移除集合中的一个或多个成员 | |
sunion key1 key2... | 返回所有给定集合的并集 | |
sunionstore col key1 key2... | 将所有给定的集合存储在col集合中 | |
sscan key cursor pattern count | 迭代集合中的元素 |
Sorted Set(有序集合)
Redis 中的 Sorted Set 和 Set 相似,但不允许成员重复,常用命令参见 Set 但有所区别,以“z”开头如:zadd、zcard、zincrby等等。
时间: 2024-10-05 05:24:25