【Redis】Redis5种基本数据类型的操作命令

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'))