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(一)的更多相关文章

  1. redis的安装使用以及在python中操作redis

    一.Redis介绍: Redis可以看作是一个key-value的存储系统,它为我们提供了丰富的数据结构,包括lists,sets,ordered sets和hashes.还包括了对这些数据结构的丰富 ...

  2. Python中的 redis keyspace 通知

    介绍 Redis是内存中的数据结构存储,用于缓存.高速数据摄取.处理消息队列.分布式锁定等等. 与其他内存存储相比,使用Redis的优势在于它提供了持久性和数据结构,比如列表.集合.排序集合和散列. ...

  3. python中的Redis键空间通知(过期回调)

    介绍 Redis是一个内存数据结构存储库,用于缓存,高速数据摄取,处理消息队列,分布式锁定等等. 使用Redis优于其他内存存储的优点是Redis提供持久性和数据结构,如列表,集合,有序集和散列. 在 ...

  4. 在Python中使用Redis

    在Python中要使用Redis数据库,首先要安装redis 之前的博客中有写到在命令行模式下操作Redis数据库. 要在项目中使用的话可以这么做: 通过初始化 redis.Redis,得到返回的对象 ...

  5. $Django python中使用redis, django中使用(封装了),redis开启事务(管道)

    一 Python操作Redis之普通连接 #先安装 pip3 install redis import redis r = redis.Redis(host='127.0.0.1', port=637 ...

  6. python中利用redis构建任务队列(queue)

    Python中的使用标准queue模块就可以建立多进程使用的队列,但是使用redis和redis-queue(rq)模块使这一操作更加简单. Part 1. 比如首先我们使用队列来简单的储存数据:我们 ...

  7. 有关在python中使用Redis(二)

    这里简单介绍下在python中使用如何使用hashset,set和list: 从list开始: 一般我们使用lpush对一个list进行初始化添加,但是如果需要不断往这个list里面加值,就要用rpu ...

  8. python中使用redis

    准备 安装redis服务 点击查看Ubuntu中安装Redis. 安装依赖包 pip install redis 使用 import redis 创建连接 1.普通连接: conn = redis.R ...

  9. Python中的redis学习笔记

    redis是一个key-value结构的数据库,value的格式可以使string,set,list,map(即python里面的dict),sorted set(有序集合) 1.初始化 1)直接连接 ...

随机推荐

  1. VijosP1626:爱在心中

    描述 “每个人都拥有一个梦,即使彼此不相同,能够与你分享,无论失败成功都会感动.爱因为在心中,平凡而不平庸,世界就像迷宫,却又让我们此刻相逢Our Home.” 在爱的国度里有N个人,在他们的心中都有 ...

  2. Linux运行Tomcat下的war文件

    1.查看Tomcat进程: ps -ef |grep tomcat 2.关闭Tomcat进程: kill -9 pid 3.关闭Tomcat运行: bin目录下执行 ./shutdown.sh 4. ...

  3. AngularJs(Part 5)--与后台联系

    AngularJS内置了$http这个服务来与后台联系.(默认会把接受到的数据转换为json)当然,还有一个$resource来提供与RESTful后台联系的服务. $http服务    $http比 ...

  4. linux下安装mysql的三种方法:rpm包安装、yum安装、源码包安装

    1 安装MySQL数据库服务器安装方法一://查询系统自带的数据库rpm -qa | grep -i mysql //卸载查询到的所有mysqlrpm -e --nodeps mysql-libs-5 ...

  5. UVa 1663 Purifying Machine (二分匹配)

    题意:每一个01串中最多含有一个‘*’,‘*’既可表示0也可表示1,给出一些等长的这样的01串,问最少能用多少个这样的串表示出这些串. 如:000.010.0*1表示000.010.001.011,最 ...

  6. linux 下 .o 文件, .a文件,.so文件的区别

    最近在unbuntu环境下开发代码,由于很少使用linux开发环境,所以对linux编译方面了解更少,关于.o, .a, .so文件和可执行文件一直很困惑 今天特意查了一下关于它们的区分: .o 就相 ...

  7. Android开发中,那些让你觉得相见恨晚的方法、类或接口

    Throwable类中的getStackTrace()方法,根据这个方法可以得到函数的逐层调用地址,其返回值为StackTraceElement[],而在StackTraceElement类中有四个方 ...

  8. C# 写 LeetCode easy #1 Two Sum

    1.Two Sum Given an array of integers, return indices of the two numbers such that they add up to a s ...

  9. 我对微信小程序的一些认识

    一. 什么是微信小程序. 微信小程序是指微信公众平台小程序,小程序可以帮助开发者快速的开发小程序,小程序可以在微信内被便捷地获取和传播:是不需要下载和安装既可以使用的应用小程序,是和原有的三种微信公众 ...

  10. Python机器学习笔记:朴素贝叶斯算法

    朴素贝叶斯是经典的机器学习算法之一,也是为数不多的基于概率论的分类算法.对于大多数的分类算法,在所有的机器学习分类算法中,朴素贝叶斯和其他绝大多数的分类算法都不同.比如决策树,KNN,逻辑回归,支持向 ...