目录
前言
一、Redis 是什么?
二、安装 Redis
三、基本数据类型操作
1. 字符串类型
2. 哈希类型
3. 列表类型
4. 集合类型
5. 有序集合类型
总结
前言
Redis是一个开源的使用ANSIC语言编写、支持网络、可基于内存亦可持久化的日志型、Key-Value数据库,并提供多种语言的API。
一、Redis 是什么?
Redis是一个开源的使用ANSIC语言编写、支持网络、可基于内存亦可持久化的日志型、Key-Value数据库,并提供多种语言的API。主要支持一下数据类型:
- 字符串类型
- 哈希类型
- 列表类型
- 集合类型
- 有序集合类型
二、安装 Redis
首先需要安装好 Docker,然后在 Docker 中 安装 Redis。
# 拉取镜像 docker pull redis:latest # 启动镜像 docker run -itd --name redis -p 6379:6379 redis # 执行容器 docker exec -it redis /bin/bash # 命令行界面 redis-cli
三、基本数据类型操作
1. 字符串类型
# 赋值
set str 8485
# 取值
get str
# 递增数字
incr num
# 增加指定的整数
incrby num 10
# 递减数字
decr num
# 减少指定的整数
decrby num 5
# 增加指定浮点数
incrbyfloat num 1.2
# 向尾部追加值 - 返回追加后字符串的总长度
set aaa 3847
append aaa -9858
# 获取字符串长度
strlen aaa
# 同时设置/获得国歌键值
mset cc 343 dd 34432
mget cc dd
# 位操作 - 可以节约空间
# 赋值 set str 8485 # 取值 get str # 递增数字 incr num # 增加指定的整数 incrby num 10 # 递减数字 decr num # 减少指定的整数 decrby num 5 # 增加指定浮点数 incrbyfloat num 1.2 # 向尾部追加值 - 返回追加后字符串的总长度 set aaa 3847 append aaa -9858 # 获取字符串长度 strlen aaa # 同时设置/获得国歌键值 mset cc 343 dd 34432 mget cc dd # 位操作 - 可以节约空间
2. 哈希类型
# 字段赋值 HSET key field value
hset car name bmw
hset car price 50
# 字段取值 HSET key field
hget car name
# 批量赋值 HMSET key field value [field value ...]
hmset car price 60 name bc
# 批量取值 HMGET key field [field ...]
hmget car price name
# 取值 HGETALL key
hgetall car
# 判断字符是否存在 HEXISTS key field
hexists car name
# 当字段不存在时赋值 HSETNX key field value
hsetnx car name bmw
# 增加数字 HINCRBY key field increment
hincrby car count 20
# 删除字段 HDEL key field [field ...]
hdel car count
# 只获取字段名或字段值 HKEYS key / HVALS key
hkeys car
hvals car
# 获得字段数量 HLEN key
hlen car
3. 列表类型
# 向列表两端增加元素 LPUSH key value [value ...] / RPUSH key value [value ...]
lpush nums 2
rpush nums 3
lpush nums 3 4 6
# 从列表两端弹出元素 LPOP key / RPOP key
lpop nums
rpop nums
# 获取列表中元素的个数 LLEN key
llen nums
# 获取列表片段 LRANGE key start end
lrange nums 0 -1
# 删除列表中指定的值 LREM key count value
# LREM 会删除列表中前 count 个值为 value 的元素
# count > 0 从左边开始删除
# count < 0 从右边开始删除
# count = 0 全部删除
lrem nums 0 3
# 获得/设置指定索引的元素值,即当作数组使用 - LINDEX key index / LSET key index value
lrange nums 0 -1
lset nums 2 999
# 只保留列表指定片段 LTRIM key start end
# LTRIM 和 LPUSH 一起使用可以限制列表中元素的数量
ltrim nums 0 3
# 向列表中插入元素 - LINSERT key BEFORE|ALTER pivot value
# LINSERT 先从左到右查找 pivot 然后根据 BEFORE|ALTER 来决定 value 插入到 pivot 的前后
linsert nums before 999 100
# 将元素从一个列表转到另一个列表 - RPOPLPUSH source destination
# 当 source 和 destination 相同时,不断从队尾移到队首
rpoplpush nums nums1
4. 集合类型
# 增加元素 SADD key member [member ...]
sadd letter a b c
# 删除元素 SREM key member [member ...]
srem letter b d
# 获得集合中的所有元素 SMEMBERS key
smembers letter
# 判断元素是否在集合中 SISMEMBER key member
sismember letter d
# 差集 SDIFF key [key ...]
sdiff setA setB
# 交集 SINTER key [key ...]
sinter setA setB
# 并集 SUNIOn key [key ...]
sunion setA setB
# 获得集合中元素个数
scard letter
# 进行集合运算并将结果存储
SDIFFSTORE destination key [key ...]
SINTERSTORE destination key [key ...]
SUNIOnSTORE destination key [key ...]
# 随机获得集合中的元素 SRANDMEMBER key [count]
srandmember letter 3
# 从集合中弹出一个元素 SPOP key [count]
spop letter 1
5. 有序集合类型
# 增加元素 ZADD key score member [score member ...]
zadd scores 89 Tom 23 Peter 100 David +inf Lee
# 获得元素的分数 ZSCORE key member
zscore scores Lee
# 获得排名在某个范围的元素列表 ZRANGE key start stop [WITHSCORES] / ZREVRANGE key start stop [WITHSCORES]
zrange scores 0 2 withscores
# 获得指定分数范围的元素 ZRANGEBYSCORE key min max [WITHSCORES] [LIMIT offset count]
zrangebyscore scores 20 90 withscores limit 0 1
# 增加某个元素的分数 ZINCRBY key increment member
zincrby scores 20 Tom
# 获得集合中元素的数量 ZCARD key
zcard scores
# 获得指定分数范围内的元素个数 ZCOUNT key min max
zcount scores 0 100
# 删除一个或多个元素 ZREM key member [member ...]
zrem scores Tom
# 按照排名范围删除元素 ZREMRANGERANK key start stop
zremrangebyrank scores 0 1
# 按照分数范围删除元素 ZREMRANGEBYSCORE key min max
zremrangebyscore scores 0 100
# 获得元素的排名 ZRANK key member / ZREVRANK key member
zrank scores Tom
zrevrank scores Tom
# 计算有序集合的交集
# ZINTERSCORE destination numkeys key [keys ...] [WEIGHTS weight [weight ...]] [AGGREGATE SUM|MIN|MAX]
总结
Redis 数据库中的所有数据都存储在内存中,由于内存的读写速度远快于硬盘,因此 Redis 在性能上对比其他的基于硬盘存储的数据库有非常明显的优势。