Redis(一),基础

2020/09/15 数据库 共 1416 字,约 5 分钟

Redis是一个非关系型数据库

基本操作

  1. 连接
     import redis
        
     # conn = redis.Redis(host='localhost', port=6379)
        
     pool = redis.ConnectionPool(host='localhost', port=6379)
     conn = redis.Redis(connection_pool=pool)
    
  2. 是否存在
     exists(key)
    
  3. 删除
     delete(*keys)
    
  4. 设置超时时间
     expire(key, time)  # 秒
     expireat(key, extime)  # 具体时间
    

五种数据类型

string

字符串value最多是512M

  1. 新增(修改)
     set(key, value)
    
  2. 查询
     get(key, value)
    

hash

  1. 新增(修改)
     hset(key, field, value)  # 单个
     hmset(key, {field:value,})  # 单个
    
  2. 查询
     hget(key, field)  # 单个
     hmget(key, [*field])  # 单个
     hgetall(key)  # 所有
    
  3. 删除
     hdel(key, [*field])
    

list

list通过链表实现

  1. 新增
     lpushx(key, value)  # 添加多个到左边
     lpush(key, value1, value2)  # 添加多个到左边
     rpushx(key, value)  # 添加多个到右边
     rpush(key, value1, value2)  # 添加多个到右边
    
  2. 查询
     lpop(key)  # 弹出最左边的并返回
     lindex(key, index)  # 根据索引返回
     lrange(key, start, end)  # 根据[start,end]返回
    
  3. 删除
     lrem(key, value, num)  # num=0,删除列表中所有的指定值
     ltrim(key, start, end)  # 删除[start,end]之外的
    
  4. 修改
     lset(key, index, value)  # 修改指定索引的值
    

set

set无重复key,通过哈希表实现,所以添加、删除、查找的复杂度都是O(1)

  1. 新增
     sadd(key, value1, value2)
    
  2. 查询
     smembers(key)  # 获取集合的所有成员
    

sort set

sort set无重复member,按score从小到大排列

  1. 新增
     zadd(key, {member:score})
    
  2. 查询
     zscore(key, member)  # 获取member对应分数
     # 按照索引范围,默认升序、无分数、浮点
     zrange(key, start, end, desc=False, withscores=False, score_cast_func=float)
     zcount(key, min, max)  # 获取分数在[min,max]间的个数
     zrank(key, member)  # 获取member的索引
    

管道

  1. 原子性操作,多个操作须全部成功,失败一个便回滚
     # transaction=True开启事务
     pipe = r.pipeline(transaction=True)
     pipe.set('name', 'a')  # 操作一
     pipe.set('age', '1')  # 操作二
     pipe.execute()
    

发布订阅

  1. 发布
     conn.publish('a', '1')
    
  2. 订阅
     # 多个订阅者同时收到相同消息
     pub=conn.pubsub()
     # 订阅某个key
     pub.subscribe("a")
     # 初次监听,会有一个测试数据
     pub.parse_response()
         
     while True:
         msg = pub.parse_response()
         print(msg)
    

文档信息

Search

    Table of Contents