Redis 以及 Python操作Redis

心已赠人 2021-11-01 07:38 443阅读 0赞

Redis

  Redis是完全开源免费的,遵守BSD协议,是一个高性能的key-value数据库。

  Redis有以下特点:

    — Redis支持数据的持久化,可以将内存中的数据保存在磁盘中,重启的时候可以再次加载进行使用。

    — Redis支持五种数据类型。

    — Redis支持数据库备份。

  Redis的优势:

    — Redis性能极高,读的速度是110000次/s,写的速度是81000次/s。

    — Redis丰富的数据类型,String,Lists,Hashes,Sets以及Ordered Sets。

    — Redis的所有操作都是原子性的,意思就是要么成功执行,要么完全失败不执行,多个操作支持事物。即MULTI和EXEC指令包起来。

    — Redis有丰富的特性,支持publish/subscribe,通知,key过期等等特性。

  Redis 配置

    — 可以通过redis-cli 进入交互模式,使用config命令查看或设置配置项。也可以进入配置文件用vim编辑器进行修改。

  1. # 获取所有配置项
  2. reids 127.0.0.1:6379> config get *
  3. # 获取单个配置项
  4. redis 127.0.0.1:6379> config get loglevel
  5. # 编辑配置
  6. redis 127.0.0.1:6379> config set loglevel "notice"

  Redis 数据类型

    — String 字符串

      — redis的string可以包含任何数据,包括图片以及序列化的对象,一个键最大能存储512MB。

    — Hash 哈希

      — redis的hash是一个String类型的key和value的映射表,hash特别适合存储对象,类比python字典。

    — List 列表

      — redis的list是简单的字符串列表,按照插入顺序排序,可以从两端进行添加,类似于双向链表,列表还可以进行阻塞。

    — Set 集合

      — redis的set是字符串类型的无序且不重复集合。集合是通过哈希表实现的,所以添加,删除,查找的时间复杂度都是O(1)。

    — Zset 有序集合

      — redis的zset和set一样,不同的是每个元素都会关联一个double类型的分数,redis正是通过对分数的排序对集合进行有序存储。

1558776-20190624001915441-1645383899.png

Python 操作Redis

  — 下载 pip install redis

  — 连接

    Redis提供两个类Redis和StrictRedis用于实现Redis的命令,StrictRedis用于实现大部分官方的命令,并使用官方的语法和命令,

    Redis是StrictRedis的子类,用于向后兼容旧版本的redis-py。

    Redis连接实例是线程安全的,可以直接将redis连接实例设置为一个全局变量,直接使用。

    如果需要另一个Redis实例(or Redis数据库)时,就需要重新创建redis连接实例来获取一个新的连接

    连接redis,加上decode_responses=True,写入的键值对中的value为str类型,不加这个参数写入的则为字节类型。

  1. import redis
  2. res = redis.Redis(host="localhost", port=6379, password="", decode_responses=True)
  3. res.set("gaoxin", 18)
  4. print(type(res.get("gaoxin"))) # <class 'str'>

Python Redis 连接池

  使用connection pool来管理对一个redis server的所有连接,避免每次建立、释放连接的开销。

  默认,每个Redis实例都会维护一个自己的连接池。可以直接建立一个连接池,

  然后作为参数传给Redis实例,这样就可以实现多个Redis实例共享一个连接池。

  1. pool = redis.ConnectionPool(host="localhost", port=6379, password="", decode_responses=True)
  2. res = redis.Redis(connection_pool=pool)
  3. res.set("haha", 18)
  4. print(res.get("haha"))

Redis的基本命令

Redis的命令 String

ExpandedBlockStart.gifRedis的命令 String

复制代码

  1.   set(name, value, ex=None, px=None, nx=False, xx=False)
  2.   Redis中设置值,默认,不存在则创建,存在则修改
  3.     参数:
  4.     ex,过期时间(秒)过期后值None
  5.     px,过期时间(毫秒)
  6.     nx,如果设置为True,则只有name不存在时,当前set操作才执行
  7.     xx,如果设置为True,则只有name存在时,当前set操作才执行
  8.     注:ex,px,nx,xx可以跟在命令后面 eg: setnx 表示只能创建 hash命令一样适用
  9.   get(key) 获取key的值
  10.   mset(*args, **kwargs) 批量设置值
  11.   mget(key, *args)
  12.   .....请走入官方文档.....

复制代码

Redis的命令 hash

ExpandedBlockStart.gifRedis的命令 hash

复制代码

  1. hset(name, key, value) 增加单个 不存在则创建
  2.   hget(name, key) 获取单个
  3.   hmset(name, mapping) 批量增加 mapping为字典
  4.   hgetall(name) 获取name对应hash的所有键值
  5.   hlen(name) 获取name对应的hash中键值对的个数
  6.   hkeys(name) 获取name对应的hash中所有的key的值
  7.   hvals(name) 获取name对应的hash中所有的value的值
  8.   hexists(name, key) 检查name对应的hash是否存在当前传入的key
  9.   hdel(name,*keys) name对应的hash中指定key的键值对删除
  10.   hscan_iter(name, match=None, count=None)
  11.     利用yield封装hscan创建生成器,实现分批去redis中获取数据
  12.     参数:
  13.     match,匹配指定key,默认None 表示所有的key
  14.     count,每次分片最少获取个数,默认None表示采用Redis的默认分片个数

复制代码

Redis的命令 list

ExpandedBlockStart.gif Redis的命令 list

剩下的集合以及有序集合的命令 请移步官方文档~~~~

redis的发布订阅者模式

redis的发布和订阅者模式就像是广播发消息是一样的,我们来测试下发布以及订阅者模式~

ExpandedBlockStart.gifredis订阅者

复制代码

  1. # by gaoxin
  2. import redis
  3. r = redis.Redis(host="127.0.0.1", password="", decode_responses=True)
  4. # 第一步 生成一个订阅者对象
  5. pubsub = r.pubsub()
  6. # 第二步 订阅一个消息 实际上就是监听这个键
  7. pubsub.subscribe("gaoxin")
  8. # 第三步 死循环一直等待监听结果
  9. while True:
  10. print("working~~~")
  11. msg = pubsub.parse_response()
  12. print(msg)

复制代码

ExpandedBlockStart.gifredis发布者

  1. # by gaoxin
  2. import redis
  3. r = redis.Redis(host="127.0.0.1", password="", decode_responses=True)
  4. r.publish("gaoxin", "hahaha")

Django Redis

  pip install django-redis

  参考django-redis 的文档 以及源码里看封装的一些方法

转载于:https://www.cnblogs.com/chengege/p/10993042.html

发表评论

表情:
评论列表 (有 0 条评论,443人围观)

还没有评论,来说两句吧...

相关阅读

    相关 python操作Redis

    使用redis模块,可以方便的使用脚本完成Redis数据构造和清理。本文借助脚本,给大家演示一下redis常用数据结构list、set、hash等数据结构的常用增删改查的操作。