目录
基本类型
Redis 支持五种数据类型: string(字符串) 、 hash(哈希)、list(列表) 、 set(集合) 及 zset(sorted set: 有序集合)
import redis
# 普通连接 ip地址 端口 密码/身份 储存位置
conn = redis.Redis(host="192.168.23.166", port=6379,password="123456",db=0)
conn.set("x1","hello",ex=5) # ex代表seconds,px代表ms
val = conn.get("x1")
print(val)
import redis
# 连接池
pool = redis.ConnectionPool(host="192.168.23.166", port=6379,password="123456",max_connections=1024)
conn = redis.Redis(connection_pool=pool)
print(conn.get("x1"))
Set集合,无重复
sadd(name,values)
#给name对应的集合中添加元素
# a目录 set_name集合,aa,bb是值
r.sadd("a:set_name","aa","bb")
smembers(name)
#获取name对应的集合的所有成员
scard(name)
#获取name对应的集合中的元素个数
r.scard("set_name")
sinter(keys, *args)
# 获取多个name对应集合的并集
r.sadd("set_name","aa","bb")
r.sadd("set_name1","bb","cc")
r.sadd("set_name2","bb","cc","dd")
print(r.sinter("set_name","set_name1","set_name2"))
#输出:{bb}
sismember(name, value)
#检查value是否是name对应的集合内的元素
spop(name)
#随机删除并返回指定集合的一个元素
sunion(keys, *args)
#获取多个name对应的集合的并集
r.sunion("set_name","set_name1","set_name2")
srem(name, value) 删除集合中的某个元素
r.srem("set_name", "aa")
List列表,有序
print r.lpush("1",1) #输出的结果是1
print r.lpush("1",1) #输出的结果是2
print r.lpush("1",2,3,4) #输出的结果是5
print r.set("2",1) #输出的结果是 True
print r.lpush("2",2) #输出的结果是 redis.exceptions.ResponseError: WRONGTYPE Operation against a key holding the wrong kind of value,原因是键 2 是字符串类型,我们用list中的lpush给他添加元素
Rpush 命令用于将一个或多个值插入到列表的尾部(最右边)。
print r.rpush("2",1) #输出的结果是1
print r.rpush("2",2,3) #输出的结果是3
print r.rpush("2",4,5) #输出的结果是5
Blpop 命令移出并获取列表的第一个元素, 如果列表没有元素会阻塞列表直到等待超时或发现可弹出元素为止。
print r.rpush("3",1,2,3,4,5,6,) #输出的结果是6
print r.blpop("3") #输出的结果是('3', '1')
print r.blpop("3") #输出的结果是('3', '2')
print r.blpop("3") #输出的结果是('3', '3')
print r.blpop("4",timeout=2) #因为键 4 不存在,所以2秒后输出的结果是None
Brpop 命令移出并获取列表的最后一个元素
print r.rpush("4",1,2,3,4,5,6,) #输出的结果是6
print r.brpop("4") #输出的结果是('4', '6')
print r.brpop("4") #输出的结果是('4', '5')
print r.brpop("4") #输出的结果是('4', '4')
print r.brpop("5",timeout=2) #因为键 4 不存在,所以2秒后输出的结果是None
Brpoplpush 命令从列表中弹出一个值,将弹出的元素插入到另外一个列表中并返回它; 如果列表没有元素会阻塞列表直到等待超时或发现可弹出元素为止
print r.rpush("11",1,2,3) #输出的结果是3
print r.rpush("22",4,5,6,) #输出的结果是3
print r.brpoplpush(src="11",dst="22",timeout=2) #输出的结果是3
print r.brpoplpush(src="44",dst="22",timeout=2) #键44 不存在,输出的结果是None
Lindex 命令用于通过索引获取列表中的元素。你也可以使用负数下标,以 -1 表示列表的最后一个元素, -2 表示列表的倒数第二个元素,以此类推。
print r.rpush("6",1,2,3) #输出的结果是3
print r.lindex("6",1) #输出的结果是2
print r.lindex("6",2) #输出的结果是3
print r.lindex("6",3) #输出的结果是None
print r.lindex("6",4) #输出的结果是None
print r.lindex("6",-1) #输出的结果是3
Linsert 命令用于在列表的元素前或者后插入元素。
print r.rpush("7",1) #输出的结果是1
print r.rpush("7",2) #输出的结果是2
print r.linsert("7","BEFORE","2",12) #输出的结果是2
Llen 命令用于返回列表的长度。 如果列表 key 不存在,则 key 被解释为一个空列表,返回 0 。 如果 key 不是列表类型,返回一个错误。
print r.llen("8") #key 不存在,输出的结果是0
print r.rpush("8",1) #输出的结果是1
print r.llen("8") #输出的结果是1
print r.rpush("8",2,3) #输出的结果是3
print r.llen("8") #输出的结果是3
Lpop 命令用于移除并返回列表的第一个元素。
print r.lpop("9") #输出的结果是None
print r.rpush("9",1) #输出的结果是1
print r.rpush("9",2) #输出的结果是2
print r.lpop("9") #输出的结果是1
https://www.cnblogs.com/zl1991/p/10552160.html
哈希 hashes
- HDEL:删除对应哈希(Hash)表的指定键(key)的字段,hdel(self, name, key)
- HEXISTS:检测哈希(Hash)表对应键(key)字段是否存在,返回布尔逻辑,hexists(self, name, key)
- HGET:获取哈希(Hash)指定键(key)对应的值,hget(self, name, key)
- HGETALL:获取哈希(Hash)表的键-值对(key-value pairs),返回python字典类型数据,hgetall(self, name)
- HINCRBY:为哈希表(Hash)指定键(key)对应的值(key)加上指定的整数数值(int,可为负值)hincrby(self>, name, key, amount=1),Redis 中本操作的值被限制在 64 位(bit)有符号数字。
- HKEYS:返回哈希表(Hash)对应键(key)的数组(Python称之为列表List),hkeys(self, name)
- HLEN: 获取哈希表(Hash)中键-值对(key-value pairs)个数,hlen(self, name)
- HMGET:获取哈希表(Hash)中一个或多个给点字段的值,不存在返回nil(Redis命令行)/None(Python),hmget(self, name, keys),其中keys可以为列表(list)
- HMSET:设置对个键-值对(key-value pairs)到哈希表(Hash)中,python输入值(mapping)为字典(dictionary)类型,hmset(self, name, mapping)
- HSET:为哈希表(Hash)赋值,若键(key)存在值(value)则覆盖,不存在则创建,hset(self, name, key, value)
- HSETNX:为哈希表(Hash)不存值(value)的键(key)赋值,存在操作无效,对应值(value)无变化,hsetnx(self, name, key, value)
- HVALS:返回哈希表(Hash)对应值(value)的列表,hvals(self, name)
- HINCRBYFLOAT:为哈希表 key 中的指定字段的浮点数值加上增量 increment ,hincrbyfloat(self, name, key, amount=1.0)
#!/usr/bin/python
# -*- coding:utf-8 -*-
# __author__ = 'Jack'
pool = redis.ConnectionPool(host='127.0.0.1', port=6379)
r = redis.Redis(connection_pool=pool)
r.flushall() # 清空Redis
r.hset('n1', 'k1', 'v1') # hset(name, key, value),name对应的hash中设置一个键值对(不存在,则创建;否则,修改)
print(r.hget('n1', 'k1'))
r.hmset('n2', {'k1': 'v1', 'k2': 'v2', 'k3': 'v3'}) # hmset(name, mapping),在name对应的hash中批量设置键值对
print(r.hmget('n2', 'k2'))
print(r.hgetall('n2')) # 获取name对应hash的所有键值
print(r.hlen('n2')) # 获取name对应的hash中键值对的个数
print(r.hkeys('n2')) # 获取name对应的hash中所有的key的值
print(r.hvals('n2')) # 获取name对应的hash中所有的value的值
print(r.hexists('n2', 'k4')) # 检查name对应的hash是否存在当前传入的key
r.hdel('n2', 'k3') # 将name对应的hash中指定key的键值对删除
r.hset('n3', 'k1', 1)
r.hincrby('n3', 'k1', amount=1) # hincrby(name, key, amount=1),自增name对应的hash中的指定key的value的值,不存在则创建key=amount
print(r.hgetall('n3'))