python操作redis学习笔记

python操作redis学习笔记
Redis服务器的所有数据都是基于内存的,不同于memcached,Redis可以实现
1. 存储数据到磁盘,方便断电重启和提升可靠性
2. 保存旧数据
3. 提供多种数据结构,不限于简单字符串
在ubuntu上安装Redis可以参考我的另一篇博客Ubuntu安装redis的两种方法。

python3环境中安装redis驱动

pip3 install redis

导入redis模块

import redis
import time
conn = redis.Redis('127.0.0.1', 6379)  # 本机安装,ip为本地地址

Redis字符串使用

conn.set('secret', 'test_1')
print(conn.get('secret'))
# conn.keys(self, pattern) 可以列出所有的键
print(conn.keys('*'))  # 输出 [b'secret', b'hello', b'name', b'foo']
# setnx()方法只有当键不存在的时候才设定值
conn.setnx('secret', 'test_2')
# 使用setnx对已存在的键设值无效
print(conn.get('secret'))    # 输出 test_1
# getset返回旧的值,同时赋新值
print(conn.getset('secret', 'test_3'))
# getrange()得到子串, offset:0代表开始,-1代表结束(注意,结束代表最后一个字符的后一位)
print(conn.getrange('secret', -6, -1))   # 输出 test_3
# 从偏移处开始替换子串
print(conn.setrange('secret', 0, 'ICKY'))
# mset设值多个键值
conn.mset({'pie':'cherry','cordial':'sherry'})
# mget获取多个键的值
conn.mget(['pie', 'cordial'])   # 输出['cherry','sherry']
# 删除
conn.delete('pie')
# incr()或incrbyfloat()增加值,函数decr()减少值
# 不存在 decrbyfloat()可以用增加负数代替 incrbyfloat('fever', -2.0)
print(conn.incr('carats', 10))

Redis列表

# redis的列表只能包含字符串
conn.lpush('zoo', 'bear')
conn.lpush('zoo', 'alligator','duck')
# linsert在一个值得前或后面插入
conn.linsert('zoo', 'before', 'bear', 'beaver')
conn.linsert('zoo', 'after', 'bear', 'cassowary')
# lset()在偏移量处插入
conn.lset('zoo', 2,'marmoset')
# rpush()在结尾处插入
conn.rpush('zoo','yak')

#lindex()给定偏移量处的值
conn.lindex('zoo', 3)
# lrange()取给定偏移量范围的所有值
conn.lrange('zoo', 0, 2)
# ltrim()保留列表中给定范围的值
conn.ltrim('zoo', 1, 4)
# 使用了lrange()得到一定范围的值
conn.lrange('zoo', 0, -1)  # 0~-1代表全部

Redis哈希表

# Redis的哈希表类似于字典,但它仅能包含字符串,不能嵌套
conn.hmset('song', {'do':'a deer', 're':'about a deer'})
# 使用哈希表设置一个单一字段值
conn.hset('song', 'mi', 'a note to follow me')
conn.hget('song', 'mi')
# 获取多个字段值
conn.hmget('song', 're', 'do')

# 取所有字段的键
conn.hkeys('song')
# 取所有字段的值
conn.hvals('song')
# 字段总数
conn.hlen('song')
# 所有字段的键和值
conn.hgetall('song')

Redis集合(set)

conn.sadd('zoo', 'duck', 'goat', 'turkey')
# 集合内数量
conn.scard('zoo')
# 删除
conn.srem('zoo', 'turkey')
# 集合间操作
# 集合交集
conn.sinter('zoo', 'zoo2')
# 获取集合交集并存储到新集合flow中
conn.sinterstore('flow','zoo','zoo2')
# 集合并集
conn.sunion('zoo', 'zoo2')
conn.sunionstore('flow','zoo','zoo2')
# 集合差集
conn.sdiff('zoo', 'zoo2')
conn.sdiffstore('flow', 'zoo', 'zoo2')

Redis有序集合 (sorted set)

# 有序集合用途1)排行榜 2)二级索引 3)时间序列(把时间戳作为分数)
now = time.time()
# tom登录
conn.zadd('logins', 'tom', now)
# 五分钟后,jerry登录
conn.zadd('logins', 'jerry', now+(5*60))
# 两小时后,marry登录
conn.zadd('logins', 'marry', now+(2*60*60))
# jerry登录次序
conn.zrank('logins', 'jerry')  # 输出 2
# jerry登录时间
conn.zscore('logins', 'jerry')
# 按照顺序查看每一位访客
conn.zrange('logins', 0, -1)
# 按照顺序查看每一位访客,并附上时间
conn.zrange('logins', 0, -1, withscores=True)

你可能感兴趣的:(python)