有关在python中使用Redis(一)
python作为一种处理数据的脚本语言本身有许多方法函数供大家使用,有时候为了提升数据处理速度(如海量数据的访问或者海量数据的读取),涉及分布式管理架构,可能需要用到Redis,Redis是一个开源的使用ANSI C语言编写、支持网络、可基于内存亦可持久化的日志型、Key-Value数据库,并提供多种语言的API。
下面简单介绍下python中Redis的使用:
1、最简单的redis连接(无密码):
r = redis.Redis(host='localhost', port=6379,db=1, decode_responses=True)
host为主机号,port为端口号,一般redis默认为6379,db为你操作缓存数据库的database_name,在redis中的dbname默认从0开始,也可以自己定义,有需要的可以下载Redis Desktop Manager对redis进行可视化操作,官方下载地址:https://redisdesktop.com/。
加上decode_responses=True,写入的键值对中的value为str类型,不加这个参数写入的则为字节类型。
接下来针对我们连接到的redis资源可以开始进行简单的set和get操作
r.set('name', 'yyy',ex=10)
r.set('age', 24,px=1000)
r.set('iphone', 22222)
print(r['name'])
print(r.get['age'])
print(r.get('iphone'))
此处的ex指name字段失效时间为10s,px单位为毫秒,失效时间为1000毫秒,不指定可以持久化存储,上面的代码name等10之后就取不到了,因为失效了,资源释放了,但是iphone可以get到
具体可以带的参数有:
ex,过期时间(秒)
px,过期时间(毫秒)
nx,如果设置为True,则只有name不存在时,当前set操作才执行
xx,如果设置为True,则只有name存在时,当前set操作才执行
2.有关redis的ConnectionPool操作(无密码):
pool=redis.ConnectionPool(host='localhost', port=6379,db=1,decode_responses=True)
r=redis.Redis(connection_pool=pool)
默认情况下,您创建的每个Redis实例将依次创建自己的连接池。您可以通过将已创建的连接池实例传递给Redis类的connection_pool参数来覆盖此行为并使用现有连接池。您可以选择这样做,以实现客户端分片或更好地控制连接的管理方式。
pool = redis.ConnectionPool(connection_class = YourConnectionClass, your_arg = '...',...)
您也可以创建自己的连接子类。如果你想控制异步框架内的套接字行为,这可能很有用。要使用自己的连接实例化客户端类,您需要创建一个连接池,将您的类传递给connection_class参数。传递给池的其他关键字参数将传递给在初始化期间指定的类。
接下来我们可以针对上述连接池进行操作测试:
pool=redis.ConnectionPool(host='localhost', port=6379,db=1,decode_responses=True)
r=redis.Redis(connection_pool=pool)
lists=[]
data={"city":"tianjing","region":"guangzhou","name":"dsfdsf"}
data2 = {"city": "guangzhou", "region": "guangzhou", "name": "dsfdsf"}
data3= {"city": "beijing", "region": "guangzhou", "set": "324"}
lists.append("data")
lists.append("data2")
lists.append("data3") #列表转dataframe
df=pd.DataFrame(lists) #dataframe转jsonstr,因为redis是键值对存储
jsondf=df.to_json(orient='index') r.lpush("goods2",jsondf) #通过lpop取出redis里面的值,这是一种队列操作,一个一个的取出来
vs=r.lpop("goods2") # 取出的数据转字典进行遍历
data = json.loads(vs, encoding='utf-8') print(type(data))
print(data)
for v in data.items():
print(v)
需要注意的是你往redis里面放的数据是键值对类型的,所以取出来的时候也是key——value样式,所以这里为了操作方便可以将list或者set或者hash一类的转jsonstr进行存储,取出来的时候再转回去就可以了。
接下来的微博我们将针对redis进行其他操作,喜欢的朋友欢迎收看。
有关在python中使用Redis(一)的更多相关文章
- redis的安装使用以及在python中操作redis
一.Redis介绍: Redis可以看作是一个key-value的存储系统,它为我们提供了丰富的数据结构,包括lists,sets,ordered sets和hashes.还包括了对这些数据结构的丰富 ...
- Python中的 redis keyspace 通知
介绍 Redis是内存中的数据结构存储,用于缓存.高速数据摄取.处理消息队列.分布式锁定等等. 与其他内存存储相比,使用Redis的优势在于它提供了持久性和数据结构,比如列表.集合.排序集合和散列. ...
- python中的Redis键空间通知(过期回调)
介绍 Redis是一个内存数据结构存储库,用于缓存,高速数据摄取,处理消息队列,分布式锁定等等. 使用Redis优于其他内存存储的优点是Redis提供持久性和数据结构,如列表,集合,有序集和散列. 在 ...
- 在Python中使用Redis
在Python中要使用Redis数据库,首先要安装redis 之前的博客中有写到在命令行模式下操作Redis数据库. 要在项目中使用的话可以这么做: 通过初始化 redis.Redis,得到返回的对象 ...
- $Django python中使用redis, django中使用(封装了),redis开启事务(管道)
一 Python操作Redis之普通连接 #先安装 pip3 install redis import redis r = redis.Redis(host='127.0.0.1', port=637 ...
- python中利用redis构建任务队列(queue)
Python中的使用标准queue模块就可以建立多进程使用的队列,但是使用redis和redis-queue(rq)模块使这一操作更加简单. Part 1. 比如首先我们使用队列来简单的储存数据:我们 ...
- 有关在python中使用Redis(二)
这里简单介绍下在python中使用如何使用hashset,set和list: 从list开始: 一般我们使用lpush对一个list进行初始化添加,但是如果需要不断往这个list里面加值,就要用rpu ...
- python中使用redis
准备 安装redis服务 点击查看Ubuntu中安装Redis. 安装依赖包 pip install redis 使用 import redis 创建连接 1.普通连接: conn = redis.R ...
- Python中的redis学习笔记
redis是一个key-value结构的数据库,value的格式可以使string,set,list,map(即python里面的dict),sorted set(有序集合) 1.初始化 1)直接连接 ...
随机推荐
- 1067 Bash 游戏v2
传送门 1067 Bash游戏 V2 基准时间限制:1 秒 空间限制:131072 KB 分值: 10 有一堆石子共有N个.A B两个人轮流拿,A先拿.每次只能拿1,3,4颗,拿到最后1颗石子的人 ...
- CF 949D Curfew——贪心(思路!!!)
题目:http://codeforces.com/contest/949/problem/D 有二分答案的思路. 如果二分了一个答案,首先可知越靠中间的应该大约越容易满足,因为方便把别的房间的人聚集过 ...
- SQL 优化总结(二) 索引
索引 1.索引的建立 缺省情况下建立的索引是非群集索引,但有时它并不是最佳的:合理的索引设计要建立在对各种查询的分析和预测上. 一般来说: (1) 有大量重复值.且经常有范围查询(between, ...
- 获取.net对象的属性集
int count = System. ComponentModel.TypeDescriptor .GetProperties( StudyInfo).Count ; ...
- winform 控件合集2
http://www.cnblogs.com/peterzb/archive/2009/06/18/1505424.html 包含自定义绘制的ListBox, 带拖动,图片显示, 内嵌其它控件, 打印 ...
- selenium 点击页面链接测试
点击页面链接测试 http://www.51testing.com/html/21/n-862721.html 需求:现在有一个网站的页面,我希望用python自动化的测试点击这个页面上所有的在本窗口 ...
- Aspose.words写表格时多出空格的问题
通过aspose.words创建表格时,每一个表格总是有一个制表符,和空格差不多,经过查找原因如下: 我是先通过书签找到需要插入表格的位置,在这个位置开始写表格的操作.问题出在书签上,这个书签在创建的 ...
- struts2+jquery+easyui+datagrid+j…
一.概述 struts2提供了针对json的插件支持.常规来讲我们将如何将对象数组转成json对象在客户端直接调用呢?尤其和jquery的easyui插件配合使用,这个可能会有很多的问题需要我们解决. ...
- SQL 分组获取产品 前两条记录
select * from ( select *, ROW_NUMBER() over(partition by IPAddress order by recordtime desc) as rowN ...
- Python包管理工具小结
此文已由作者张耕源授权网易云社区发布. 欢迎访问网易云社区,了解更多网易技术产品运营经验. 作为一名接触Python有一段时间的初学者,越来越体会到Python的方便之处,它使人能更 多的关注业务本身 ...