一、引言
Redis 是一个基于内存的高性能键值数据库,支持多种数据结构,常用于缓存、消息队列和实时数据处理。
二、安装
https://github.com/tporadowski/redis/releases
三、数据类型
3.1 string(字符串)
(1)根据键获取值
不存在则返回nil
(2)根据多个键获取多个值
(3)设置键值
(4)设置多个键值
1
| set <key> <value> <key> <value> <key> <value>
|
(5)判断键值是否存在
用处:
(6)设置键值过期时间
1
| set <key> <second> <value>
|
(7)删除键值
(8)字符串拼接值
(9)自增自减
1 2 3 4 5 6 7 8 9 10 11 12 13
| set count 0
incr count get count # 1
decr count get count # 0
incrby count 10 get count # 10
decrby count 10 get count # 0
|
(10)字符串长度
(11)比特流操作
1 2 3
| setbit <key> <offset> <value> # 设置比特中某个偏移的值 getbit <key> <offset> # 查看比特中某个偏移的值 bitcount <key> # 比特中设为1的数量
|
3.2 key 操作
(1)查找键
参数支持简单的正则表达式
(2)判断键是否存在
存在返回1,不存在返回0
(3)查看值的数据类型
(4)删除键
1
| del <key> <key> <key> ...
|
(5)查看键的有效期
返回结果是秒为单位的整数
-1 表示永不过期,
-2 表示当前数据已经过期,查看一个不存在的数据的有效期就是 -2
(6)设置 key 有效期
给已有的数据重新设置有效期,有效期到了,数据就会被删除
(7)清空所有 key
(8)key 重命名
1
| rename <oldkey> <newkey>
|
(9)select 切换数据库
redis 的配置文件中,默认有0-15之间的16个数据库,默认操作的就是0号数据库
3.3 list 数组
注意:list 的子成员类型为 string
(1)添加子成员
1 2 3 4 5 6 7
| # 在左边添加 lpush <key> <value> <value> <value> # 在右边添加 rpush <key> <value> <value> <value> # 在指定元素的左边/右边插入一个数据 linsert key before <指定元素> <value> linsert key after <指定元素> <value>
|
(2)获取列表成员
根据指定的索引(下标)获取成员的值,负数下标从右边-1开始,逐个递减
(3)获取列表切片
闭区间包括 stop
1
| lrange <key> <start> <stop>
|
(4)获取列表长度
(5)按索引设置值
1
| lset <key> <index> <value>
|
(6)删除指定成员
1 2
| lpop <key> # 第一个成员出列, 并返回它 rpop <key> # 最后一个成员出列, 并返回它
|
1 2 3 4
| # count = 0 表示删除列表所有值为 value 成员 # count > 0 表示删除列表左侧开始的前 count 个 value 成员 # count < 0 表示删除列表右侧开始的前 count 个 value 成员 lrem <key> <count> <value>
|
3.4 hash(哈希)
1 2 3 4 5
| key:{ field1:value1 field2:value2 field3:value3 }
|
(1)设置指定键的属性/域
设置指定键的的单个属性
1
| hset <key> <field> <value> <field> <value> <field> <value> ...
|
(2)获取指定键的域/属性的值
1
| hget <key> <field> <value>
|
(3)获取指定键的所有键/值
(4)获取哈希的所有域值对
(5)删除指定键的域/属性
1
| hdel <key> <field> <field> <field> ...
|
(6)判断指定属性/域是否存在于当前键对应的hash中
(7)属性值自增自减
1 2
| hincrby <key> <field> hdecrby <key> <field>
|
3.5 set(集合)
去重、无序
(1)添加元素
1
| sadd <key> <member> <member> <member> ...
|
(2)获取集合所有的成员
(3)获取集合的长度
(4)随机抽取一个或多个元素
(5)删除指定元素
(6)交集、差集和并集
1 2 3 4 5 6
| # 交集 sinter <key> <key> # 差集 sdiff <key> <key> # 并集 sunion <key> <key>
|
3.6 zset(有序集合)
有序集合(score/value)去重并且根据 score 权重值来进行排序的。score 从小到大排列。
(1)添加成员
1
| zadd <key> <score> <member> <score> <member> <score> <member> ...
|
(2)获取 score 在指定区间的所有成员
1 2 3 4 5 6 7 8
| # 按 score 进行从低往高排序获取指定 score 区间 zrangebyscore <key> <min_score> <max_score> # 按 score 进行从高往低排序获取指定 score 区间 zrevrangebyscore <key> <min_score> <max_score> # 按 score 进行从低往高排序获取指定索引区间, 0 -1 表示从低到高全部成员 zrange <key> <start_idx> <stop_idx> # 按 scoer 进行从高往低排序获取指定索引区间 zrevrange <key> <start_idx> <stop_idx>
|
(3)获取集合长度
(4)获取指定成员的权重值
(5)获取指定成员在集合中的排名
1 2 3 4
| # 从低到高排 zrank <key> <member> # 从高到低排 zrevrank <key> <member>
|
(6)获取 score 在指定区间的所有成员的数量
1
| zcount <key> <min> <max>
|
(7)给指定成员增加权重值
1
| zincrby <key> <score> <member>
|
(8)删除成员
1
| zrem <key> <member> <member> <member> ...
|
(9)删除指定数量的成员
1 2 3 4
| # 删除指定数量的成员,从最低 score 开始删除 zpopmin <key> [count] # 删除指定数量的成员,从最高 score 开始删除 zpopmax <key> [count]
|