python中对redis的支持

python中对redis的支持

https://www.cnblogs.com/haiyan123/p/8492417.html

对字符串的操作

set mset get mget getset等

import redis

pool = redis.ConnectionPool(host='localhost',port=6379)
conn = redis.Redis(connection_pool=pool)

#添加 同名则修改
conn.set('a',1)

# 批量添加
# conn.mset(k1="v1",k2="v2")
conn.mset({'k3':5,'k4':6})

# 批量获取
result = conn.mget({'k1','k2'}) # [None, None]
print(result)
result = conn.mget('k3','k4') # [b'5', b'6']
print(result)

# 设置新值并获取原来的值
r = conn.getset('a','abc')

print(conn.get('a')) # b'abc'

对列表的操作

import redis

pool = redis.ConnectionPool(host='localhost', port=6379)
conn = redis.Redis(connection_pool=pool)

# 保存顺序为: 3,2,1
conn.lpush('oo', 1, 2, 3)

# 返回个数
print(conn.llen('oo'))  # 3
print(conn.lrange('oo', 0, -1))  # [b'3', b'2', b'1']
# 在name对应的列表的某一个值前或后插入一个新值
conn.linsert('oo', 'AFTER', 2, 'alex')

# 对name对应的list中的某一个索引位置重新赋值

'''
# 由于redis类库中没有提供对列表元素的增量迭代,如果想要循环name对应的列表的所有元素,那么就需要:
    # 1、获取name对应的所有列表
    # 2、循环列表
# 但是,如果列表非常大,那么就有可能在第一步时就将程序的内容撑爆,所有有必要自定义一个增量迭代的功能:
 
def list_iter(name):
    """
    自定义redis列表增量迭代
    :param name: redis中的name,即:迭代name对应的列表
    :return: yield 返回 列表元素
    """
    list_count = r.llen(name)
    for index in xrange(list_count):
        yield r.lindex(name, index)
 
# 使用
for item in list_iter('pp'):
    print item
'''

对hash的操作

import redis

pool = redis.ConnectionPool(host='localhost', port=6379)
conn = redis.Redis(connection_pool=pool)

hash = {'a1': 'b1', 'a2': 'b2', 'a3': 3}
conn.hmset('key1', hash)

conn.hset('key2', 't1', 'edg')

print(conn.hget('key1', 'a1'))  # b'b1'
print(conn.hmget('key1', ['a1', 'a2'])) # [b'b1', b'b2']

print(conn.hget('key2', 't1')) # b'edg'

redis事务

#!/usr/bin/env python
# -*- coding:utf-8 -*-

'''
redis-py默认在执行每次请求都会创建(连接池申请连接)和断开(归还连接池)一次连接操作,
如果想要在一次请求中指定多个命令,
则可以使用pipline实现一次请求指定多个命令,并且默认情况下一次pipline 是原子性操作。
'''

import redis

pool = redis.ConnectionPool(host='10.211.55.4', port=6379)

r = redis.Redis(connection_pool=pool)

# pipe = r.pipeline(transaction=False)
pipe = r.pipeline(transaction=True)
pipe.multi()
pipe.set('name', 'alex')
pipe.set('role', 'sb')

pipe.execute()

在Django中的运用Redis进行缓存操作

https://blog.csdn.net/m0_37886429/article/details/82556935

  • 一个细节问题:

当我们以不同的方式获取资源,无论是搜索,分页,查询,html,json,都会产生不同的key,因此他们对应的缓存也是不同的

中间件缓存的使用

https://www.jianshu.com/p/1ca8bd26108c

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值