1.字符串类型String
我们来看一下具体的介绍:
1.import redis
2.client = redis.StrictRedis(host='localhost', port=6379, db=0)
set()方法:单个string操作方法,用于设置给定 key 的值。如果 key 已经存储其他值, SET 就覆写旧值,且无视类型;
1.语法:set(name, value, ex=None, px=None, nx=False, xx=False)
参数:
ex - 过期时间(秒)
px - 过期时间(毫秒)
nx - 如果设置为True,则只有name不存在时,当前set操作才执行
xx - 如果设置为True,则只有name存在时,当前set操作才执行
# key是"name" value是"chaoge" 将键值对存入redis缓存,ex表示30s过期
client.set('name', 'chaoge', ex=30)
get()方法:单个string操作,用于获取指定 key 的值,如果key不存在,返则返回nil,如果key储存的值不是字符串类型,返回一个错误;
# 取出键name对应的值
print(client.get('name'))
mset():多个string操作,用于同时设置一个或多个key-value对;
# mset使用key:value键值对的形式来赋值
data = {'name1':'liang','name2':'chao'}
client.mset(data)
#或
client.mset({'name1':'liang','name2':'chao'})
mget():多个string操作,返回所有给定key的值;
# mget获取name1和name2的value
print(client.mget('name1','name2'))
delete():删除数据,可以根据key来指定删除数据;
# delete删掉指定的key
client.delete('name1','name2')
print(client.mget('name1','name2'))
incr():自增key对应的值,当key不存在时,则默认key=0,,否则,则自增。
#设置key:foo的值为123
client.set("foo", 123)
print(client.get("foo")) #123
#通过incr实现foo的值自增1,amount默认为1
client.incr("foo", amount=1)
print(client.get("foo")) #124
#通过incr实现foo的值自增2
client.incr("foo",2)
print(client.get("foo")) #126
应用场景 – 页面点击数
假定我们对一系列页面需要记录点击次数。例如论坛的每个帖子都要记录点击次数,而点击次数比回帖的次数的多得多。如果使用关系数据库来存储点击,可能存在大量的行级锁争用。所以,点击数的增加使用redis的INCR命令最好不过了。
decr():自减 key对应的值,当key不存在时,则默认key=0,否则,则自减。
#设置key:foo为123
client.set("foo", 123)
print(client.get("foo")) #123
client.decr("foo",3) # 递减3
print(client.get("foo")) #120
client.decr("foo" ) # 递减1
print(client.get("foo")) #119
2.列表类型list
import redis
client = redis.StrictRedis(host='localhost', port=6379, db=0)
lpush()方法:令将一个或多个值插入到列表头部,如果 key 不存在,一个空列表会被创建并执行 LPUSH 操作,当 key存在但不是列表类型时,返回一个错误;
注意:在Redis 2.4版本以前的 LPUSH 命令,都只接受单个 value 值;
# 插入一个元素
result = client.lpush('lsts','name')
print(result)
# 创建列表
lsts =('name','age','class','score')
# 插入多个元素
result = client.lpush('lsts',*lsts)
print(result)# 4
lrange()方法:返回列表中指定区间内的元素,区间以偏移量START和END指定,其中0表示列表的第一个元素,1表示列表的第二个元素,以此类推,以-1表示列表的最后一个元素, -2表示列表的倒数第二个元素,以此类推;
# 先加入进入的元素在后面,后加入的元素在前面
result = client.lrange('lsts',0,-1)
print(result)# [b'score', b'class', b'age', b'name']
lpop()方法:用于移除并返回列表的第一个元素;
1.# 从左边删除一个元素
2.result = client.lpop('lsts')
3.print(result)# b'score'
3.集合类型set
1.import redis
2.client = redis.StrictRedis(host='localhost', port=6379, db=0)
sadd():将一个或多个成员元素加入到集合中,已经存在于集合的成员元素将被忽略;
1.sets =('name','age','class','score')
2.result = client.sadd('new_sets',*sets)
3.print(result)# 4
smembers():判断成员元素是否是集合的成员;
1.result = client.smembers('new_sets')
2.print(result)
srem():用于移除集合中的一个或多个成员元素,不存在的成员元素会被忽略;
1.result = client.srem('new_sets','address')
2.print(result)# 1
4.哈希类型hash
1.import redis
2.client = redis.StrictRedis(host='localhost', port=6379, db=0)
hset():用于为哈希表中的字段赋值 ,如果哈希表不存在,一个新的哈希表被创建并进行HSET操作;
1.client.hset("hash1","k1","v1")
2.client.hset("hash1","k2","v2")
hkeys():用于获取哈希表中的所有域(field);
1.print(client.hkeys("hash1")) # [b'k1', b'k2']
hget():用于返回哈希表中指定字段的值;
1.print(client.hget("hash1","k1"))# b'v1'
hmget():用于返回哈希表中,一个或多个给定字段的值;
1.print(client.hmget("hash1","k1","k2"))# [b'v1', b'v2']
5.有序集合类型 sorted set
1.import redis
2.client = redis.StrictRedis(host='localhost', port=6379, db=0)
zadd(name, *args, **kwargs):在name对应的有序集合中添加元素;
1.d ={'Join':'20'}
2.result = client.zadd("zset1", d)
3.print(result)# 1
zcard(name):获取name对应的有序集合元素的数量;
1.result = client.zcard("zset1")
2.print(result)
zcount(name, min, max):获取name对应的有序集合中分数 在 [min,max] 之间的个数;
1.client.zcount("zset1",0,1)
zincrby(name, value, amount) :自增name对应的有序集合的 name 对应的分数;
1.print(client.zincrby("zset1",1,'20'))