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进行其他操作,喜欢的朋友欢迎收看。