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编辑器进行修改。

# 获取所有配置项
reids 127.0.0.1:6379> config get *
# 获取单个配置项
redis 127.0.0.1:6379> config get loglevel
# 编辑配置
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正是通过对分数的排序对集合进行有序存储。

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类型,不加这个参数写入的则为字节类型。

redis 简单设置值

import redisconn = redis.Redis(host="127.0.0.1", port=6379, decode_responses=True)# conn.set("n1", "v1")
# conn.hset("n2", "k2", "v2")  # 设置字典  redis = {n2: {k2: v2}}# ret1 = conn.get("n1")
# ret2 = conn.hget("n2", "k2")
# print(ret1)
# print(ret2)conn.hmset("n3", {"k3": "v3", "k4": "v4"})  # 设置多个值# ret3 = conn.hget("n3", "k3")
# ret4 = conn.hget("n3", "k4")
# ret5 = conn.hgetall("n3")              # 获取所有值
# ret6 = conn.get("xxxx")
# print(ret6)# print(ret3)
# print(ret4)
# print(ret5)

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

Redis的命令 String

hset(name, key, value)  增加单个 不存在则创建hget(name, key)  获取单个hmset(name, mapping)  批量增加 mapping为字典hgetall(name) 获取name对应hash的所有键值hlen(name)  获取name对应的hash中键值对的个数hkeys(name)  获取name对应的hash中所有的key的值hvals(name)  获取name对应的hash中所有的value的值hexists(name, key)  检查name对应的hash是否存在当前传入的keyhdel(name,*keys)   将name对应的hash中指定key的键值对删除hscan_iter(name, match=None, count=None)利用yield封装hscan创建生成器,实现分批去redis中获取数据参数:match,匹配指定key,默认None 表示所有的keycount,每次分片最少获取个数,默认None表示采用Redis的默认分片个数Redis命令之Hash

hash

lpush(name,values)  在name对应的list中左边添加元素 没有就新建llen(name) 获取name对应的列表长度lrang(name, index1, index2) 按照index切片取出name对应列表里值lpushx(name, value)  只能添加不能新建linsert(name, where, refvalue, value))  在name对应的列表的某一个值前或后插入一个新值参数:name,redis的namewhere,BEFORE或AFTERrefvalue,标杆值,即:在它前后插入数据value,要插入的数据 lset(name, index, value)  给指定索引修改值lrem(name, value, num)在name对应的list中删除指定的值参数:name,redis的namevalue,要删除的值num, num=0,删除列表中所有的指定值;num=2,从前到后,删除2个; num=1,从前到后,删除左边第1个num=-2,从后向前,删除2个lindex(name, index)  在name对应的列表中根据索引获取列表元素Redis命令之List

list

Python Redis 连接池

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

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

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

import redis# 保持跟数据库的链接,当超过数量时,就等着
#                                                         # 解码,打印出来不再是b'xx'    最大链接数
pool = redis.ConnectionPool(host="127.0.0.1", port=6379, decode_responses=True, max_connections=10)conn = redis.Redis(connection_pool=pool)ret = conn.get("n1")
print(ret)

redis发布订阅者模型

启动监听

import redis
conn = redis.Redis(host="127.0.0.1", port=6379, decode_responses=True)# 第一步 生成一个订阅者对象
pubsub = conn.pubsub()
# 第二步 订阅一个消息
pubsub.subscribe("lewen")
# 创建一个接收
while True:print("working~~~")msg = pubsub.parse_response()print(msg)  # 默认值是1# 只要订阅的内容发布改变,就会更新所有

发布内容

import redis
conn = redis.Redis(host="127.0.0.1", port=6379, decode_responses=True)
conn.publish("lewen", "cq")

Django Redis

  pip install django-redis

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

qhfl-5 redis 简单操作相关推荐

  1. linux redis简单操作

    linux redis简单操作 1.centOS 系统安装redis https://blog.csdn.net/weixin_42835409/article/details/119562074 2 ...

  2. 学JAVA要学redis_新手学习Java对Redis简单操作

    REmote DIctionary Server(Redis) 是一个由Salvatore Sanfilippo写的key-value存储系统. Redis是一个开源的使用ANSI C语言编写.遵守B ...

  3. [转载] Flask+Celery+Redis简单操作

    参考链接: 使用Flask,Redis和Celery的异步任务 使用celery可以使得任务异步执行,在处理复杂或耗时长的任务时经常需要,废话不多说,直接进入正题. 结构树  安装各种包 pip in ...

  4. java操作redis简单示例

    java操作redis简单示例     初学redis,在java语言和环境下完成redis的入门学习.              首先,官网下载源码,编译,安装,修改配置文件redis.conf中的 ...

  5. NOSQL——redis的安装,配置与简单操作

    内容预知 1.缓存的相关知识 1.1 缓存的概念 1.2 系统缓存 1.3 缓存保存位置及分层结构 DNS缓存 应用层缓存 数据层缓存 硬件缓存 2.关系型数据与非关系型数据库 2.1 关系型数据库 ...

  6. java代码简单操作Redis数据Jedis jar

    java操作Redis数据API->Jedis Jedis引入 作为java码农,如何在代码中操作Redis呢? Jedis的介绍 Redis不仅可以使用命令来操作,现在基本上主流的语言都有AP ...

  7. laravel redis_解析laravel之redis简单模块操作

    入门级操作 普通 set / get 操作: set操作,如果键名存在,则会覆盖原有的值: $redis = app('redis.connection'); $redis->set('libr ...

  8. python redis连接池获取后关闭_python通过连接池连接redis,操作redis队列

    在每次使用redis都进行连接的话会拉低redis的效率,都知道redis是基于内存的数据库,效率贼高,所以每次进行连接比真正使用消耗的资源和时间还多.所以为了节省资源,减少多次连接损耗,连接池的作用 ...

  9. Redis简单案例(二) 网站最近的访问用户

    原文:Redis简单案例(二) 网站最近的访问用户 我们有时会在网站中看到最后的访问用户.最近的活跃用户等等诸如此类的一些信息.本文就以最后的访问用户为例, 用Redis来实现这个小功能.在这之前,我 ...

最新文章

  1. C# 3.0 —— 扩展方法
  2. [C++调试笔记]初始化
  3. 蓝牙驱动卸载后自动安装_智能产品 | 安装水循环系统后,全自动洗车机洗车会更节水吗?...
  4. 【Python】Python语言math模块可用函数
  5. Mysql更新数据库数据sql_一条更新SQL在MySQL数据库中是如何执行的
  6. Android开发--Button的应用
  7. hdoj1242(bfs+priority_queue)
  8. readlink()不能读取硬链接的目标
  9. jq onclick 定义_jq中的onclick绑定事件
  10. okr与项目管理区别?
  11. docker build报错解决:error creating overlay mount to .../overlay
  12. 四川省巴中市谷歌高清卫星地图下载
  13. 金和IUapp制作“手机之家”
  14. 【此间乐,不思蜀】 大一不想咸鱼的暑假7.17
  15. 获取裁判文书案号问题的解决过程
  16. python手机版下载-手机python下载
  17. 华为OD机试Golang解题 - 最快到达医院方式
  18. JVM知识点精华汇总 侵立删
  19. python + opencv 框选出图片中人脸
  20. 50条有趣的Python一行代码,建议收藏!

热门文章

  1. linux 交叉编译 nginx,交叉编译nginx,luajit
  2. arduino 嗡鸣器 音乐_[求助]怎样实现红外遥控蜂鸣器播放音乐,求大神指正
  3. 三相pmsm矢量控制仿真模型_学术|基于新型滑模观测器的永磁同步电机无传感器矢量控制系统...
  4. busybox arm-linux-gcc 4.4.4库的路径,BUSYBOX编译错误及解决方法总结
  5. Pytorch教程(十八)tensor的保存为csv,并加载
  6. 推荐一位资深 Python 大佬
  7. 花 1 个月收入购买一份保险之后,我的一点碎碎念!
  8. Github 热榜项目:如何让你的终端酷炫到没朋友
  9. 2019,GMIS归来!杨强、吴恩达等全球重磅嘉宾共话数据智能
  10. python selenium 等待页面加载_python selenium 三种等待方式详解(实战常用)