安装redis模块

第一种方式 pip 安装

pip3 install redis

第二种方式 下载源码安装:

ubunt系统:

下载redis模块

wget --no-check-certificate https://pypi.python.org/packages/source/r/redis/redis-2.8.0.tar.gz

解压

tar -zvxf redis-2.8.0.tar.gz

安装

cd redis-2.8.0
sudo python3 setup.py install

导入模块:

from redis import *

redis模块中提供了StrictRedis对象,用于连接redis服务器,并按照不同类型提供了不同方法,进行交互操作

连接数据库

StricRedis() #创建一个连接对象

调用ping方法,返回True说明连接成功

from redis import *
# host = Redis服务器地址
# port = 6379 redis服务端口号,默认6379
# db = 0 连接那个数据库(0-15)
st = StrictRedis(host='192.168.20.82', port=6379, db=0)
print(st.ping())

string类型操作

string方法:跟在终端中使用的方法基本一样

set   添加键值对
setex 添加键值对并设置超时时间
mset 添加多个兼职对
append 追加
get  获取指定key值
mget  获取多个键值对
delete 删除
keys 查看数据库中所有key

from redis import *
# host = Redis服务器地址
# port = 6379 redis服务端口号,默认6379
# db = 0 连接那个数据库(0-15)
st = StrictRedis(host='192.168.20.82', port=6379, db=0)
print(st.ping())

res = st.set('name','python')  # 添加一键值对
print(res)


res = st.get('name')
print(res)

st.mset(name1='linux',name2='mysql') # 同时插入多个键值对

res = st.mget('name1','name2')  # 同时获取多个key 的value值,返回一个列表
print(res)

st.setex('name3',50,'redis')  # 插入一个键值对并设置超时时间

res = st.exists('name')  # 判断key是否存在,存在则返回True,不存在则返回False
print(res)

删除


from redis import *
# host = Redis服务器地址
# port = 6379 redis服务端口号,默认6379
# db = 0 连接那个数据库(0-15)
st = StrictRedis(host='192.168.20.82', port=6379, db=0)

res = st.keys()  # 查看所有key
print(res)

st.delete('name')  # 删除指定key
res = st.keys()
print(res)

hash类型

hash类型方法:

hset hash表中插入一条数据 hmset 同时将多个field-value(域-值)对设置到哈希表key中。 hkeys 获取指定键所有的属性 hget 获取一个属性的值 hmget 获取多个属性的值 hvals 获取所有属性的值 hdel 删除指定属性 hgetall 获取在哈希表中指定 key 的所有字段和值 hexists 查看哈希表 key 中,指定的字段是否存在。 hlen 获取哈希表中字段的数量


from redis import *
# host = Redis服务器地址
# port = 6379 redis服务端口号,默认6379
# db = 0 连接那个数据库(0-15)
st = StrictRedis(host='192.168.20.82', port=6379, db=0)

res = st.hset('hero','name','鲁班')   # hash表中插入一条数据
# 同时将多个field-value(域-值)以字典做参数,设置到哈希表中。

res = st.hmset('hero',{'name':'李白','age':18})
print(res)
res = st.hkeys('hero') # 获取指定key的所有属性
print(res)
res = st.hget('hero','name') # 获取指定属性的值
print(res)

res = st.hmget('hero','name','age')  # 同时获取多个指定属性值
print(res)
res  = st.hvals('hero')  # 获取hash表key中所有的属性值,字典形式返回
print(res)

res = st.hgetall('hero') # 获取所有属性和值,字典形式返回
print(res)
res = st.hexists('hero','name') # 查看hash表key中,指定的属性是否存在
print(res)
res = st.hlen('hero') # 统计hash表中字段有几个
print(res)
res = st.hdel('hero','age')  # 删除age属性
print(res)

list类型

list类型方法: lpush 在左侧插入数据 lpushx 只有key值存在的时候才能插入数据 rpush 在右侧插入数据 rpushx 只有key存在时才能插入数据 linsert 在指定元素的前或后插入新元素 lpop 移除列表第一个元素 blpop 移除列表第一个元素,如果列表没有元素会阻塞列表直到等待超时或发现可弹出元素为止 rpop 移除列表最后一个元素 brpop 移除列表最后一个元素, 如果列表没有元素会阻塞列表直到等待超时或发现可弹出元素为止。 lrange 获取列表指定范围内的元素 lindex 通过索引获取列表中的元素 lset 通过索引设置list元素的值 lrem 删除指定元素 llen 获取列表长度

from redis import *

# host = Redis服务器地址
# port = 6379 redis服务端口号,默认6379
# db = 0 连接那个数据库(0-15)
st = StrictRedis(host='192.168.20.82', port=6379, db=0)

res = st.lpush('hero', '李白')  # 在左侧插入数据
print(res)
res = st.rpush('hero', '安琪拉')  # 在右侧插入数据
st.linsert('hero', 'before', '安琪拉', 'python')  # 在指定元素的前面插入元素
st.lpop('hero')  # 移除列表第一个元素
st.rpop('hero')  # 移除列表的最后一个元素
st.lrange('hero', 0, -1)  # 获取列表指定范围内的元素,负数表示从后往前,-1表示最后一个
st.lset('hero', 1, 'linux')  # 将索引为1的值替换成linux
st.llen('hero')  # 获取列表的长度,也就是元素的个数
st.lrem('hero', 1, 'linux')  # 删除指定元素,数字表示删除几个

set集合类型

set集合方法:

sadd 向集合中添加多个成员

scard 获取集合的成员数

smembers 返回集合中的所有成员

srem 移除集合中一个或多个成员


from redis import *

# host = Redis服务器地址
# port = 6379 redis服务端口号,默认6379
# db = 0 连接那个数据库(0-15)
st = StrictRedis(host='192.168.20.82', port=6379, db=0)

st.sadd('hero','libai') # 向集合hero中添加一个元素
st.sadd('hero','zhanghsan')
st.sadd('hero','lisi')
st.sadd('hero','wangwu')
res = st.scard('hero') # 查看集合hero中有多少个元素
print(res)
res = st.smembers('hero') # 获取集合的所有元素
print(res)
st.srem('hero','lisi')  # 移除指定元素

差集,交集,并集:

sdiff 返回给定所有集合的差集 sinter 返回给定所有集合的交集 sunion 返回所有给定集合的并集

from redis import *

# host = Redis服务器地址
# port = 6379 redis服务端口号,默认6379
# db = 0 连接那个数据库(0-15)
st = StrictRedis(host='192.168.20.82', port=6379, db=0)

st.sadd('hero1','libai','hanxi','zhaoliu','wangwu')  # 向集hero1中添加多个元素
st.sadd('hero2','libai','hanxi','zhaoliu','wangwu','zhangsan')  # 向集hero2中添加多个元素

res = st.sdiff('hero1','hero2') # 求差集,hero1中存在,hero2中不存在的
print(res)
res1 = st.sinter('hero1','hero2') # 求并集,hero1中存在,hero2中存在.
print(res1)
res2 = st.sunion('hero1','hero2') # 求并集,hero1中存在,或者 hero2中存在.
print(res2)

输出结果:

zset有序集合

zadd 向有序集合添加一个或多个成员,或者更新已存在成员的分数

zcrad 获取有序集合的成员数

zrange 通过索引区间返回有序集合成指定区间内的成员start、stop为元素的下标索引,索引从左侧开始,第一个元素为0

zrange key 0 -1 表示获取有序集合的全部元素,索引可以是负数,表示从尾部开始计数,如-1表示最后一个元素

zrangebyscore 返回score值在min和max之间的成员

zscore 返回元素member的score值

zrank 返回指定元素的索引值

删除元素:

zrem 删除指定元素

zremrangebyscore 删除指定权重值之间的元素

from redis import *

# host = Redis服务器地址
# port = 6379 redis服务端口号,默认6379
# db = 0 连接那个数据库(0-15)
st = StrictRedis(host='192.168.20.82', port=6379, db=0)

# 向有序集合添加一个或多个成员,数字为权重值
# 权重值大的将保存在最后
st.zadd('hero',1,'zhangsan',100,'lisi',27,'wangwu',10,'cailiu',20,'wangwu')

res = st.zrange('hero',0,-1) # 获取指定区间的元素
print(res)
res = st.zrangebyscore('hero',20,100) # 获取权重值为20-100之间的元素
print(res)
res = st.zscore('hero','lisi') # 获取lisi的权重值
print(res)
res = st.zrank('hero','lisi') # 获取指定元素的索引值
print(res)
st.zrem('hero','zhangsan') # 删除指定元素
st.zremrangebyscore('hero',20,100) # 删除指定权重值区间元素
数据库基础 all right reserved,powered by Gitbook文件修订时间: 2018-04-19 11:54:20