qhfl-5 redis 简单操作
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 简单操作相关推荐
- linux redis简单操作
linux redis简单操作 1.centOS 系统安装redis https://blog.csdn.net/weixin_42835409/article/details/119562074 2 ...
- 学JAVA要学redis_新手学习Java对Redis简单操作
REmote DIctionary Server(Redis) 是一个由Salvatore Sanfilippo写的key-value存储系统. Redis是一个开源的使用ANSI C语言编写.遵守B ...
- [转载] Flask+Celery+Redis简单操作
参考链接: 使用Flask,Redis和Celery的异步任务 使用celery可以使得任务异步执行,在处理复杂或耗时长的任务时经常需要,废话不多说,直接进入正题. 结构树 安装各种包 pip in ...
- java操作redis简单示例
java操作redis简单示例 初学redis,在java语言和环境下完成redis的入门学习. 首先,官网下载源码,编译,安装,修改配置文件redis.conf中的 ...
- NOSQL——redis的安装,配置与简单操作
内容预知 1.缓存的相关知识 1.1 缓存的概念 1.2 系统缓存 1.3 缓存保存位置及分层结构 DNS缓存 应用层缓存 数据层缓存 硬件缓存 2.关系型数据与非关系型数据库 2.1 关系型数据库 ...
- java代码简单操作Redis数据Jedis jar
java操作Redis数据API->Jedis Jedis引入 作为java码农,如何在代码中操作Redis呢? Jedis的介绍 Redis不仅可以使用命令来操作,现在基本上主流的语言都有AP ...
- laravel redis_解析laravel之redis简单模块操作
入门级操作 普通 set / get 操作: set操作,如果键名存在,则会覆盖原有的值: $redis = app('redis.connection'); $redis->set('libr ...
- python redis连接池获取后关闭_python通过连接池连接redis,操作redis队列
在每次使用redis都进行连接的话会拉低redis的效率,都知道redis是基于内存的数据库,效率贼高,所以每次进行连接比真正使用消耗的资源和时间还多.所以为了节省资源,减少多次连接损耗,连接池的作用 ...
- Redis简单案例(二) 网站最近的访问用户
原文:Redis简单案例(二) 网站最近的访问用户 我们有时会在网站中看到最后的访问用户.最近的活跃用户等等诸如此类的一些信息.本文就以最后的访问用户为例, 用Redis来实现这个小功能.在这之前,我 ...
最新文章
- C# 3.0 —— 扩展方法
- [C++调试笔记]初始化
- 蓝牙驱动卸载后自动安装_智能产品 | 安装水循环系统后,全自动洗车机洗车会更节水吗?...
- 【Python】Python语言math模块可用函数
- Mysql更新数据库数据sql_一条更新SQL在MySQL数据库中是如何执行的
- Android开发--Button的应用
- hdoj1242(bfs+priority_queue)
- readlink()不能读取硬链接的目标
- jq onclick 定义_jq中的onclick绑定事件
- okr与项目管理区别?
- docker build报错解决:error creating overlay mount to .../overlay
- 四川省巴中市谷歌高清卫星地图下载
- 金和IUapp制作“手机之家”
- 【此间乐,不思蜀】 大一不想咸鱼的暑假7.17
- 获取裁判文书案号问题的解决过程
- python手机版下载-手机python下载
- 华为OD机试Golang解题 - 最快到达医院方式
- JVM知识点精华汇总 侵立删
- python + opencv 框选出图片中人脸
- 50条有趣的Python一行代码,建议收藏!
热门文章
- linux 交叉编译 nginx,交叉编译nginx,luajit
- arduino 嗡鸣器 音乐_[求助]怎样实现红外遥控蜂鸣器播放音乐,求大神指正
- 三相pmsm矢量控制仿真模型_学术|基于新型滑模观测器的永磁同步电机无传感器矢量控制系统...
- busybox arm-linux-gcc 4.4.4库的路径,BUSYBOX编译错误及解决方法总结
- Pytorch教程(十八)tensor的保存为csv,并加载
- 推荐一位资深 Python 大佬
- 花 1 个月收入购买一份保险之后,我的一点碎碎念!
- Github 热榜项目:如何让你的终端酷炫到没朋友
- 2019,GMIS归来!杨强、吴恩达等全球重磅嘉宾共话数据智能
- python selenium 等待页面加载_python selenium 三种等待方式详解(实战常用)