Redis
- remote dictionary server
- 配置信息/服务器统计信息查看配置文件
- 有服务器和客户端,服务器需要到指定文件夹打开,客户端不需要,因为新版本没有了服务器的默认配置文件
- redis是一个key-value数据库,value支持string、list、set、zset
- 所有数据存储在内存中,可以将内存中数据异步写入硬盘中
Redis命令
Redis command
- 在Redis-cli客户端执行命令
# 连接
Redis-cli -h host -p port -a password
# 用于检测服务端是否连接
ping
# 关闭当前连接
quit
# 切换到指定数据库
select index
Redis key
- 用于管理Redis的键
# 基本语法:
command keyname # 成功返回integer 1,否则返回integer 2
# 如:
set keyname keyvalue
get kename
# 常用命令
del
exists
dump # 序列化给定key,并返回序列化的值
expire # 设置过期时间
rename key newname
type key
Redis string
- 用于管理Redis字符串值
# 常用命令
创建
set
mset key value key value # 同时设置多个key-value
查
get
keys *
改
set key newvalue(覆盖)
set key value NX(有key则不覆盖,无则创建新值)
append key value(在value后新增)
Redis hash
- 是一个string类型的field和value的映射表,hash特别适合用于存储对象
# 基本语法
hmset hashname field1 field2
# 每个field 是一个key-value
# 如:
HMSET w3ckey name "Redis tutorial" description "Redis basic commands for caching"
# 常用命令
创建
hset key field1 field2 field3
删
hdel key field1 [field2]
查
hexists key field
hget key field
hkeys key # 获取所有字段
hvals key # 获取所有值
hlen key # 获取字段数量
改
hset key field
Redis list
- Redis列表是简单的字符串列表,按照插入顺序排序,可以往列表头部或者尾部添加元素
# 基本语法
lpush key value
# 常用操作
插入数据
lpush key value1 value2
rpush key value1 value2
查
llen key # 列表长度
lrange key start end # 根据索引查数据,支持正负索引
弹出数据
lpop key
rpop key
改
lset key index newvalue
Redis set
- Redis的set是string类型的无序集合
- 通过hash表实现,所以添加、删除、查找都是复杂度O(1)
# 命令
增
sadd key member1 member2
查
scard key # 获取集合成员数
smembers key # 返回集合中所有成员
弹出数据(随机)
spop key
删除
srem key value1 value2
交集
sinter key1 key2 key3
并集
sunion key1 key2 key3
差集
sdiff key1 key2 key3
Redis sorted set
- 和无序集合一样是string类型的元素集合,不同的是每个元素都会关联一个double类型的分数,Redis正是通过分数来为集合成员进行从小到大的排序
- 成员唯一,但是score分数可以重复
# 常用命令
zadd key score1 member1 member2
Redis hyperloglog
- 用于做技术统计算法,在输入元素的数量或体积非常大时,计算基数所需的空间总是固定的,并且很小。
- 每个hyperloglog键需要花费12KB内存,就可以计算2^64个不同元素的基数
- 但是只会根据输入元素来计算基数,不会存储输入元素本身
- 基数:不重复元素的数量
# 常用命令
pfadd key element element # 添加元素到hyperloglog中
pfcount key key # 返回基数估算值
Redis 发布订阅
- Redis发布订阅是一种消息通信方式:发送者(pub)发送消息,订阅者(sub)接受消息
- Redis客户端可以订阅任意数量的频道
- 流程:
# 1订阅
subscribe Redischat
# 2发布信息
publish Redischat "content"
# 每个客户端都能发布订阅
Redis事务
-
流程
-
# 开始事务 multi # 命令 content # 执行事务(/提交事务) exec
-
-
其他常用命令:
# 放弃执行事务中的所有命令 discard # 监视 watch key
Redis备份
# 1创建当前数据库的备份,将会在安装目录中创建dump.rdb文件
save
# 2该命令在后台执行
bgsave
# 恢复数据
只需要把备份文件移到redis安装目录并开启服务即可
python操作redis
- 模块:redis
- 类:redis和strictredis
- redis是子类,结果默认是字节,可以设定decode_response = True改为字符串