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改为字符串