Redis 中常见的数据类型
- 字符串 String
- 哈希 hash , 相当于 python 中的字典
- 列表 List
- 集合 Set
- 有序集合 ZSet
字符串中常见的命令
-
set key value : 将数据永久型存储到数据库
-
get key :
-
getrange key start end : 从start开始截取,到 end结束,且包含 end
-
strlen key : 获取某个键对应的值的长度
-
incr key : 将 key 对应的值 + 1 ,值必须是一个数字
-
incrby key increment : 将 key 对应的值 增加 increment
-
decr key : 将 key 对应的值 - 1 ,值必须是一个数字
-
decrby key increment : 将 key 对应的值 减少 increment
-
getset key value : 覆盖key的值,并返回 key的旧值
-
mset key value key1 value1 … 批量设置多个键和值
-
mget key key1… : 获取多个 key的值
-
setex key seconds value : 存储数据、设置过期时间,单位是秒
-
setnx key value : key不存在的时候,才设置 value ,否则不生效
-
set key value [ex secends] [px millsecends] [nx|xx]
- ex : 代表设置过期时间,单位 秒
- px : 代表设置过期时间,单位 毫秒
- nx : 代表 键不存在的时候,设置 值
- xx : 代表 键存在,修改数据
哈希 hash 常见的命令
-
hset key field value 存储数据
-
haset a 3(将a的值设为3)
-
hsetnx key field value : 当field键不存在、才向字典中存储 value
-
hget key field 获取字典中对应的 键的值
-
hmset key field value [field value …] 批量存储数据
-
hmget key field [field …] 获取字典中对应的键的值
-
hgetall key 获取所有的键和值
-
hkeys key 获取所有的键
-
hvals key 获取所有的值
-
hexists key field 判断字典中是否存在某一个键
-
hincrby key field increment : 对字典中某一属性对应的值 + increment
-
hlen key: 获取字典的大小
-
hdel key field : 删除字典中某一个键
列表的常见命令 List
-
lpush key val [val …] left push 从列表的头部进行数据的添加
-
rpush key val [val …] right push 向列表的尾部进行数据的添加
-
rpush list1 1 2 3 (向list1中依次插入1,2,3)
-
lindex key index : 通过 index 索引查找对应位置的数据, index 从0开始
-
llen key : 获取列表长度
-
lpop key : 移除列表中第一个元素
-
rpop key : 移除列表中最后一个元素
-
lrem key count value
count > 0 : 从 列表的头部删除 count个 valuecount < 0 : 从列表的尾部删除 count 个 value
count = 0 : 将 列表中的所有 value 移除
-
lrange key start end 获取列表 start -end 之间的数据,包含 start - end
-
lset key index value : 修改 指定 Index 位置上的数据为 value
集合 Set 常见的命令
-
sadd key member1 [member2…] 新增成员
-
srem key member1 [member2] 删除成员
-
scard key 获取成员数量
-
smembers key 获取所有成员
-
spop key 随机从集合中删除一个元素
-
srandmember key [count] : 从集合中随机获取 count 个元素,不指定的话,默认是 1
-
sismember key member : 判断成员是否是 集合中的 成员
有序集合 ZSet常见的命令
-
zadd key score member [score member …] 新增成员
-
zrem key member [member …] 删除成员
-
zcard key 获取成员数量
-
zrange key start end
-
zrevrange key start end
-
zincrby key increment member : 给某个成员添加 分数 increment
-
zrevrank key member : 查询某个成员的排名
-
zscore key memeber : 查询某个成员的成绩
-
zrangebyscore key min max : 查询分数 在 min-max 之间的成员
-
zcount key min max : 查询分数 在 min-max 之间的成员数
-
zrangebylex key min max :
主要针对分数相同的成员
-
zlexcount key min max : 查询成员 在 min-max 之间的 成员数量
min : 可以使用 - ,代表最小值, 也可以使用 一个 [字符串, 代表 包含匹配的成员例如 [s 可以匹配 s, sh …
max : 可以使用 + 代表最大值, 也可以是用 [字符串
例如 [t 可以匹配 t , 但不可以匹配 ta
[ 代表 包含
( 代表 不包含
redis中 和 键 的操作相关的命令
-
keys * : 获取redis 数据库中所有的键
-
exists key : 判断redis 是否存在某个键
-
del key : 删除某个键
-
type key : 获取某个键对应的数据类型
-
expire key seconds 给某个键设置过期时间, 单位是秒
-
pexpire key millseconds : 给某个键设置过期时间, 单位是毫秒
-
ttl key : 查询某个 键剩余的存活时间
返回 正数、代表 剩余的存活时间,单位秒
返回 -2, 代表 键已失效,或者键不存在
返回 -1, 代表 该键是永久性的 -
pttl key 查询某个 键剩余的存活时间, 单位是毫秒
-
persist key : 移除失效时间,将其变为 持久性key
-
randomkey : 随机返回某个键
redis 数据库常见的操作
- select number
0 - databases -1
redis 设置密码
# 在配置文件中、设置密码
requirepass 密码
# 查看密码
config get requirepass
# 设置密码
config set requirepass 密码
# 授权
auth 密码
Redis 的主从复制 / 哨兵模式 (Redis缓存带来的问题)
redis缓存穿透
redis缓存雪崩
redis缓存击穿
0点:下单
slave(读)
master(写) X
slave(读) -> master ( 进行 心跳机制)
slave(读)
脑裂:
python 和 redis 的集成
- 引入 redis 库
pip install redis
- 新建一个 .py 文件,并导入 redis
import redis
- 创建一个 redis 连接对象
# 方式一
client = redis.Redis(host='192.168.10.9', port=6379, db=0, password='123456', decode_responses=True)
# 方式二
client = redis.StrictRedis.from_url('redis://:123456@192.168.10.9:6379/0', decode_responses=True)
- 操作redis 数据库
client.keys('*')
- 关闭数据库连接
client.close()