一、 Redis(中间商缓存)
-
简单介绍
mangodb 直接持久化
memcache 不能持久化,只能存在内存单线程的,异步IO高并发
需要另外安装redis软件
或用Python安装redis模块
redis默认有16个db 有16个select -
基本方法使用:
select 2 创建新的工作线路
keys * 查看所有已有关键字key
set name jim 存入key_word形式数据
get name 获得key为name的数据
set name tom ex 2 存入数据且只存活两秒钟
delete 删除元素
keys in* 正则化过滤元素
expire 在一定时间内保留元素
move 将元素移动到其他的db -
操作
1) string操作 set参数: ex 过期时间s px 过期时间ms nx 如果设置为True,只有name不存在时,当前set才操作 xx 如果设置为True,只有name存在时,当前set才操作 setnx 相当于上面的set加nx参数 setex 相当于上面的ex参数 psetex ms mset 批量设置数据 mget 批量获取数据 getset 设置一个新值并返回原来的值 getrange 对字符串进行切片 setrange 对切片位置进行赋值 setbit 对字符串的相应二进制位置进行转换 bitcount 返回数据转换成二进制时有几个1 strlen 获取字符串长度 incr login_users 新增在线用户 decr login_users 在线用户离线 append 拼接字符串 2) Hash操作 hset 1 2 3 设置信息名为1,key为2,value为3 HGETALL 1 获取1的所有信息 HGET 1 2 获取1的key为2的值 HKEYS 1 获取1的所有关键字参数 HVALS 1 获取1的所有值参数 HMSET 批量设置 hscan 在指定范围获取值,过滤取值 hscaniter 返回一个迭代器 3) List操作 lpush listname value1,value2 将值放入listname列表中,先入后出 lrange listname 0 -1 将列表中的值取出 rpush 从右面放入列表 lpushx 只有当列表存在时才添加元素 llen 返回列表长度 linsert 在列表中插入元素 ltrim 移除列表中元素 RPOPLPUSH 从一个列表取最右面的元素从左面添加到另一个列表 BLPOP 删除并返回列表中的最左面的元素 BRPOPLPUSH 从一个列表中取出最左面元素并在原列表中删除它 4) Set操作 sadd 向集合中添加元素 SMEMBERS 获取所有集合中元素 scount 获取集合中元素个数 sdiff 删除集合中另一个集合的元素 SISMEMBER 检查集合中是否有某一元素 smove 从集合中移动元素 srandmember 从集合中随机获取元素 srem 从集合中删除指定元素 sunion 取并集 sscan 用条件获取集合中元素 spop 获取集合中最后面的一个元素 5)Sort Set 操作 zadd 添加元素 zrange 过滤取出元素 zcard 获取集合中元素的数量 zcount 获取集合中指定分数段的元素 zrank 获取集合中某个元素的排行 zrem 删除集合中指定元素 zremrangebyrank 按排行删除元素 zinterstore 取集合的交集,并将对应元素的分数加在一起
-
管道
# Author : Xuefeng
import redis
import time
# r = redis.Redis(host="localhost", port=9000)
pool = redis.ConnectionPool(host="localhost", port=9000, db=5)
r = redis.Redis(connection_pool=pool)
pipe = r.pipline(transation=True)
r.set("bar", "hello")
time.sleep(10)
r.set("fun", "world")
# print(r.get("bar"))
pipe.execute()
- 发布订阅
- 附录
ord() 取ASCII码
bin() 取二进制
setbit与bitcount组合统计在线人数:
用setbit置某一位为1表示用户在线
用bitcount统计所有1的个数即在线人数