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

原文地址:https://www.cnblogs.com/asd529735325/p/10216041.html