zoukankan      html  css  js  c++  java
  • Python操作Redis的5种数据类型

    1.连接redis(两种方式)

    # decode_responses=True: 解决获取的值类型是bytes字节问题                    
    r = redis.Redis(host='localhost', port='6379', db=0, decode_responses=True) 
    

      

    pool = redis.ConnectionPool(host='localhost', port=6379, db=0, decode_responses=True)
    r = redis.Redis(connection_pool=pool)
    

    2.字符串类型 String

    # ex过期时间 单位秒S
    r.set('name', 'Jack', ex=20)
    rst = r.get('name')
    print(rst)
    
    
    结果: "Jack"
    

    3.列表类型 list

    r.lpush('object', 'one')
    r.lpush('object', 'two')
    r.lpush('object', 'three')
    r.lpush('object', 'four')
    r.lpush('object', 'five')
    r.lpush('object', 'six')
    ret = r.lrange('object', 0, 5)
    print(ret[::-1], len(ret))
      
     
    结果: ['one', 'two', 'three', 'four', 'five', 'six']  6
    

    4.哈希类型  hash

    r.hset('user:info', 'name', 'Jack')
    r.hset('user:info', 'age', 20)
    r.hset('user:info', 'phone', '18712909999')
    r.hset('user:info', 'email', '123@gmail.com')
    rst = r.hgetall('user:info')
    print(rst)
    
    
    结果: {'age': '20', 'email': '123@gmail.com', 'name': 'Jack', 'phone': '18712909999'}
    

    5.集合类型  set

    r.sadd('set', 'one')
    r.sadd('set', 'two')
    r.sadd('set', 'three')
    res = r.smembers('set')
    print(res)
    
    
    结果: {'two', 'one', 'three'}
    

    6.有序集合类型 sorted set

    r.zadd('mark', 'one', 1)
    r.zadd('mark', 'two', 2)
    r.zadd('mark', 'three', 3)
    r.zadd('mark', 'four', 4)
    r.zadd('mark', 'five', 5)
    result = r.zrange('mark', 0, 10)
    print(result)
    
    
    结果: ['one', 'two', 'three', 'four', 'five']
    

    7. Redis的5种数据类型的使用场景

    String

      计数器应用

    List

      取最新N个数据的操作

      消息队列

      删除与过滤

      实时分析正在发生的情况,用于数据统计与防止垃圾邮件(结合Set)

    Set

      Uniqe操作,获取某段时间所有数据排重值

      实时系统,反垃圾系统

      共同好友、二度好友

      利用唯一性,可以统计访问网站的所有独立IP

      好友推荐的时候,根据tag求交集,大于某个threshold就可以推荐

    Hashes

      存储、读取、修改用户属性

    Sorted Set

      排行榜应用,取TOP N操作

      需要精准设定过期时间的应用(时间戳作为Score)

      带有权重的元素,比如一个游戏的用户得分排行榜

      过期项目处理,按照时间排序

  • 相关阅读:
    为什么JSP的内置对象不需要声明
    什么不能输?
    可采用两种方法得到一个EJB对象
    EJB
    J2EE之JPA
    Application、Activity Stack 和 Task的区别
    关于 android屏幕适配
    JSP 向 JavaScript 中传递数组
    Android 图片异步加载 加载网络图片
    Android 显示意图和隐式意图的区别
  • 原文地址:https://www.cnblogs.com/jack123pep/p/12720423.html
Copyright © 2011-2022 走看看