zoukankan      html  css  js  c++  java
  • 有关在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进行其他操作,喜欢的朋友欢迎收看。

  • 相关阅读:
    希尔排序算法
    直接插入排序和折半插入排序算法
    快排序算法
    部分博文目录索引(C语言+算法)
    Gnome排序算法
    选择排序算法
    pip运行报错Fatal error in launcher: Unable to create process using pip.exe
    Java Selenium封装--RemoteWebDriver
    Java Selenium封装--RemoteWebElement
    selenium webdriver自动化对日期控件的处理
  • 原文地址:https://www.cnblogs.com/asd529735325/p/10216041.html
Copyright © 2011-2022 走看看