231022|redis_demo

安装
https://github.com/tporadowski/redis
https://github.com/redis/redis-py/
解压后要先配置redis.windows.conf文件,里面有本地端口和密码设置
默认host:127.0.0.1 port:6379
打开命令行到redis文件夹下,redis-server.exe redis.windows.conf输入即可(该页面不关闭)
再打开命令行到redis文件夹下运行redis-cli.exe可以输入相关命令
redis在python中的使用
构建server有两个方法 redis.ConnectionPool和redis.Redis
设置数据get/hset/hmset,获取数据hget/hmget/hgetall

python 复制代码
pool = redis.ConnectionPool(host='121.40.96.93', port=6379, db=0, password='123456')
r = redis.Redis(connection_pool=pool)
r = redis.Redis(host='127.0.0.1', port=6379, db=0)
#插入key-value
o = r.set(
        name="name",
        value="我是来及湖南的小明同学",  # value可以是字符串,也可以是任意一个byte字节数组
        ex=60,  # 设置当前加入的key ex秒后过期(删除)
        # px=10000,  # 设置当前加入的key px毫秒后过期;不能和ex同时给定
        nx=False,  # 当设置为True的时候,当却仅当name(key)在redis中不存在的时候,才会插入
        xx=False  # 当设置为True的时候,当却仅当name(key)在redis中存在的时候,才会插入;不能和nx同时给定为True
    )
# get就是获取String类型的key对应的value值
o = r.get(name="name")
# 设置key对应数据过期时间
r.expire(name='user:1001', time=10000)  # 过期秒数
# 让hash结构的value中添加数据
o = r.hset(name="user:1001", key="id", value="1001")
# 建议添加数据的写法(从redis理论上来讲)
o = r.hmset(name="user:1002", mapping={
        "id": "1002",
        "name": "小明1111",
        "age": 17,
        "sex": "男",
        "address": "上海",
        "address2": "北京"
    })
# 一次性获取所有field的value数据 --> hgetall返回结果是一个字典,如果key不存在,那么返回字典为空{}
o = r.hgetall(name='user:1001')
# 针对我们需要的field可以采用(单一field),只要key(name)或者field不存在,返回就是None
o = r.hget(name='user:1001', key='address')
# 针对我们需要的field可以采用(多个field),返回一个list列表,如果field存在对应位置为bytes,如果field不存在,那么对应位置为None
o = r.hmget(name='user:1002', keys=['name', 'age', 'address', 'address2'])

可以用pipeline的方法进行加速

python 复制代码
def t2():
    pool = redis.ConnectionPool(host='121.40.96.93', port=6379, db=0, password='123456', max_connections=100)
    with redis.Redis(connection_pool=pool) as r:
        _t1 = time.time()
        n = 10000
        _pipeline = r.pipeline()
        for i in range(n):
            _pipeline.set(name=f'l:{i}', value=i, ex=220)
        _pipeline.execute()
        print(time.time() - _t1)
相关推荐
霖霖总总29 分钟前
[小技巧19]MySQL 权限管理全指南:用户、角色、授权与安全实践
数据库·mysql·安全
heartbeat..5 小时前
Spring AOP 全面详解(通俗易懂 + 核心知识点 + 完整案例)
java·数据库·spring·aop
麦聪聊数据7 小时前
MySQL并发与锁:从“防止超卖”到排查“死锁”
数据库·sql·mysql
AC赳赳老秦8 小时前
DeepSeek 私有化部署避坑指南:敏感数据本地化处理与合规性检测详解
大数据·开发语言·数据库·人工智能·自动化·php·deepseek
YMatrix 官方技术社区9 小时前
YMatrix 存储引擎解密:MARS3 存储引擎如何超越传统行存、列存实现“时序+分析“场景性能大幅提升?
开发语言·数据库·时序数据库·数据库架构·智慧工厂·存储引擎·ymatrix
辞砚技术录9 小时前
MySQL面试题——索引2nd
数据库·mysql·面试
linweidong10 小时前
C++thread pool(线程池)设计应关注哪些扩展性问题?
java·数据库·c++
欧亚学术11 小时前
突发!刚刚新增17本期刊被剔除!
数据库·论文·sci·期刊·博士·scopus·发表
黑白极客11 小时前
怎么给字符串字段加索引?日志系统 一条更新语句是怎么执行的
java·数据库·sql·mysql·引擎
码农水水11 小时前
中国邮政Java面试:热点Key的探测和本地缓存方案
java·开发语言·windows·缓存·面试·职场和发展·kafka