Redis_day03

简易生产者消费模型

原理:
django接到会阻塞的任务就丢给另一个人来去做 (暂时称那就是任务队列
另一个人则循环的的监听任务队列里面是否有任务 如果有则去执行
下面一个简易版模拟发邮件

redis.py

import redis
import json
r = redis.Redis(host='127.0.0.1', port=6379, db=0, password='x4305232001')

# 邮件内容
jsn_obj = {'task': 'send_email', 'email_body': 'hello redis!', 'from': 'zrf', 'to': 'redis'}
json_str = json.dumps(json_obj)
# 这是django的决定发邮件了
r.lpush('py_redis', json_str)


consumer.py

import redis
import json
r = redis.Redis(host='127.0.0.1', port=6379, db=0, password='x4305232001')

while True:
    task = r.brpop('py_redis', 10)
    print(task)
    if task:
        json_obj = json.loads(task[1])
        # 具体发邮件程序
    else:
        print('---no task---')

位图操作

SETBIT 命令

说明: 设置某位置上的二进制值
语法: SETBIT key offset value
参数: offset - 偏移量 从0开始
value - 0或者1

示例: 在这里插入图片描述
注意:

key 不存在:redis会帮我们初始化最小位字节数的bit位, 默认补0
/
key存在时:
1 满足长度要求, 直接修改当前bit位
2 在原有value上初始化最小字节数的bit位

GETBIT 命令

说明: 获取某一位上的值
语法: GETBIT key offset
示例:在这里插入图片描述

BITCOUNT 命令

说明: 统计键所对应的值中有多少个1
语法: BITCOUNT key start end
参数: start/end 代表的是 字节索引
示例:在这里插入图片描述
注意:

那个是字节索引 一个字节有8位 示例中的ab是两字节
因此bitcount name 和 bitcount name 0 1 的效果是一样的

场景应用:
在这里插入图片描述

python中使用位图

Py中操纵位图根终端中执行完全一样
1、生成连接对象r
2、调用r.setbit / getbit / bitcount

数据类型-哈希-1

定义

1、 由 field 和关联的 value 组成的键值对
2、 file 和 value 是字符串类型
3、 一个hash中最多包含 2^ 32-1个键值对

常用命令

1、设置单个字段;

HSET key field value (如果如果field不存在就添加字段 有则更新 跟python字典操作一样)
HSETNX key field value (如果key不存在则创建)

2、设置多个字段

HMSET key field value field value

3、返回字段个数

HLEN key

4、判断字段是否存在(不存在返回0)

HEXISTS key fidel

5、返回字段值

HGET key field

6、返回多个字段值

HMGET key field field

7、 返回所有的键值对

HGETALL key

8、 返回所有字段名

HKEYS key

9、返回所有值

HVALS key

10、删除指定字段

HDEL key field

11、 在字段对应值上进行整数增量运算

HINCRBY key filed -2
HINCRBYFLOAT key field 2.5

python操作hash

1、 更新一条数据的属性, 没有则新增(python字典很像)

hset(name, key, value)

2、 读取这条数据的指定属性, 返回字符串类型

hget(name, key)

3、 批量更新数据(没有则新建) 属性, 参数为字典

hmset(name, mapping)

4、批量读取数据( 没有则新建) 属性

hmget(name, keys)

5、 获取这条数据的所有属性和对应的值, 返回字典类型

hgetall(name)

6、 获取这条数据的所有属性名, 返回列表类型

hkeys(name)

7、 删除这条数据的指定属性

hdel(name, *keys)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值