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)

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

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