• 231022|redis_demo


    安装
    https://github.com/tporadowski/redis
    https://github.com/redis/redis-py/
    解压后要先配置redis.windows.conf文件,里面有本地端口和密码设置
    默认host:127.0.0.1 port:6379
    打开命令行到redis文件夹下,redis-server.exe redis.windows.conf输入即可(该页面不关闭)
    再打开命令行到redis文件夹下运行redis-cli.exe可以输入相关命令
    redis在python中的使用
    构建server有两个方法 redis.ConnectionPool和redis.Redis

    设置数据get/hset/hmset,获取数据hget/hmget/hgetall

    1. pool = redis.ConnectionPool(host='121.40.96.93', port=6379, db=0, password='123456')
    2. r = redis.Redis(connection_pool=pool)
    3. r = redis.Redis(host='127.0.0.1', port=6379, db=0)
    4. #插入key-value
    5. o = r.set(
    6. name="name",
    7. value="我是来及湖南的小明同学", # value可以是字符串,也可以是任意一个byte字节数组
    8. ex=60, # 设置当前加入的key ex秒后过期(删除)
    9. # px=10000, # 设置当前加入的key px毫秒后过期;不能和ex同时给定
    10. nx=False, # 当设置为True的时候,当却仅当name(key)在redis中不存在的时候,才会插入
    11. xx=False # 当设置为True的时候,当却仅当name(key)在redis中存在的时候,才会插入;不能和nx同时给定为True
    12. )
    13. # get就是获取String类型的key对应的value值
    14. o = r.get(name="name")
    15. # 设置key对应数据过期时间
    16. r.expire(name='user:1001', time=10000) # 过期秒数
    17. # 让hash结构的value中添加数据
    18. o = r.hset(name="user:1001", key="id", value="1001")
    19. # 建议添加数据的写法(从redis理论上来讲)
    20. o = r.hmset(name="user:1002", mapping={
    21. "id": "1002",
    22. "name": "小明1111",
    23. "age": 17,
    24. "sex": "男",
    25. "address": "上海",
    26. "address2": "北京"
    27. })
    28. # 一次性获取所有field的value数据 --> hgetall返回结果是一个字典,如果key不存在,那么返回字典为空{}
    29. o = r.hgetall(name='user:1001')
    30. # 针对我们需要的field可以采用(单一field),只要key(name)或者field不存在,返回就是None
    31. o = r.hget(name='user:1001', key='address')
    32. # 针对我们需要的field可以采用(多个field),返回一个list列表,如果field存在对应位置为bytes,如果field不存在,那么对应位置为None
    33. o = r.hmget(name='user:1002', keys=['name', 'age', 'address', 'address2'])

    可以用pipeline的方法进行加速

    1. def t2():
    2. pool = redis.ConnectionPool(host='121.40.96.93', port=6379, db=0, password='123456', max_connections=100)
    3. with redis.Redis(connection_pool=pool) as r:
    4. _t1 = time.time()
    5. n = 10000
    6. _pipeline = r.pipeline()
    7. for i in range(n):
    8. _pipeline.set(name=f'l:{i}', value=i, ex=220)
    9. _pipeline.execute()
    10. print(time.time() - _t1)

  • 相关阅读:
    写给准备跳槽的小伙伴们的设计模式——工厂方法设计模式
    mysql8.0英文考试第1-5题
    中期国际2.19黄金市场分析:美国通胀数据火热,黄金面临高利率削弱的挑战
    java基础16
    MyBatis - 代理
    【python版CV】图像轮廓&模板匹配
    Echarts-3D柱状图
    卡码网语言基础课 |链表的基础操作III
    Unity中的PostProcessScene:深入解析与实用案例
    [ITIL]-ITIL4服务管理的四个维度
  • 原文地址:https://blog.csdn.net/weixin_44529258/article/details/133970613