一、字符串操作
redis中的string在内存中都是按照一个key对应一个value来存储的。
1)set(name, value, ex=None, px=None, nx=False, xx=False)
ex,过期时间(秒)
px,过期时间(毫秒)
nx,如果设置为True,则只有name不存在时,当前set操作才执行,同setnx(name, value)
xx,如果设置为True,则只有name存在时,当前set操作才执行'''
例子:
import redis
redis_config = {
"host": "192.168.2.230",
"port":6379,
"db":0
}
r = redis.Redis(**redis_config)
r.set("time","20171124")
print(r.get("time"))
r.mset(year="2017",month="11",date="24")
print(r.mget("year","month","date"))
r.append("date","10:13")
print (r.get("date"))
运行结果:
20171124
['2017', '11', '24']
2410:13
二、list操作
redis中的List在内存中按照一个name对应一个List来存储
1)lpush(name,values)
在name对应的list中添加元素,每个新的元素都添加到列表的最左边
r.lpush("list_name",2)
r.lpush("list_name",3,4,5) # 保存在列表中的顺序为5,4,3,2
2)rpush(name,values)
同lpush,但每个新的元素都添加到列表的最右边
3)lpushx(name,value)
在name对应的list中添加元素,只有name已经存在时,值添加到列表的最左边
4)rpushx(name,value)
在name对应的list中添加元素,只有name已经存在时,值添加到列表的最右边
5)llen(name)
name对应的list元素的个数
print(r.llen("list_name"))
6)linsert(name,where,refvalue,value)
在name对应的列表的某一个值前后插入一个新值
参数:
name,redis的name
where,BEFORE或AFTER
refvalue,标杆值,即:在它前后插入数据
value,要插入的数据
7)lset(name,index,value)
对name对应的list中的某一个索引位置重新赋值
参数:
name,redis的name
index,list的索引位置
value,要设置的值
8)lrem(name,value,num)
在name对应的list中删除指定的值
参数:
name,redis的name
value,要删除的值
num, num=0,删除列表中所有的指定值;
num=2,从前到后,删除2个;
num=-2,从后向前,删除2个
9)lpop(name)
在name对应的列表的左侧获取第一个元素并在列表中移除,返回值删除那个元素的值
10)rpop(name)
表示从右向左操作
11)lindex(name,index)
在name对应的列表中根据索引取列表元素
12)lrange(name,start,end)
在name对应的列表分片获取数据
例1:
import redis
redis_config = {
"host": "192.168.2.230",
"port":6379,
"db":0
}
r = redis.Redis(**redis_config)
r.lpush("list1",1) # 往列表最左边,添加元素
r.lpush("list1","a","b","c")
print(r.lrange("list1",0,3)) # 从左至右,打印下标0-3对应的元素
r.rpush("list2",1) # 往列表最右边,添加元素
r.rpush("list2","a","b","c")
print(r.lrange("list2",0,3))
print(r.llen("list1")) # 打印列表中元素的个数
运行结果:
['c', 'b', 'a', '1']
['1', 'a', 'b', 'c']
4
例2:
import redis
redis_config = {
"host": "192.168.2.230",
"port":6379,
"db":0
}
r = redis.Redis(**redis_config)
r.lpush("list111",1)
r.lpush("list111","a","b","c")
print(r.lrange("list111",0,3))
r.linsert("list1111","AFTER","a","f") # 列表a元素后面插入f
print(r.lrange("list1111",0,-1)) # 打印列表全部元素
r.lset("list1111",3,"g") # 索引位置3重新设置新值
print(r.lrange("list1111",0,-1))
r.lrem("list1111","g",0) # 删除列表中,指定的值(以及附件N个值)
print(r.lrange("list1111",0,-1))
r.lpop("list1111") # 删除最左边一个值
print(r.lrange("list1111",0,-1))
print(r.lindex("list1111",1)) # 打印索引位置为1的值
运行结果:
['c', 'b', 'a', '1']
['b', 'a', 'f', '1']
['b', 'a', 'f', 'g']
['b', 'a', 'f']
['a', 'f']
f
三、set类型操作
set集合,即不重复的列表
1)sadd(name,values)
给name对应的集合中添加元素
r.sadd("set_name","aa")
r.sadd("set_name","aa","bb")
2)smembers(name)
获取name对应的集合的所有成员
3)scard("set_name")
获取name对应的集合中的元素个数
sinter(keys, *args)
4)sinter("set_name1","set_name2")
获取多个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"))
5)sunion(keys, *args)
获取多个name对应的集合的并集
r.sunion("set_name","set_name1","set_name2")
6)sismember(name, value)
检查value是否是name对应的集合内的元素
7)spop(name)
从集合的右侧移除一个元素,并将其返回
8)srem(name, value)
删除集合中的某个元素
r.srem("set_name", "aa")
例子:
import redis
redis_config = {
"host": "192.168.2.230",
"port":6379,
"db":0
}
r = redis.Redis(**redis_config)
r.sadd("set_name","a","b","c") # 添加集合
print(r.smembers("set_name")) # 打印集合
print(r.scard("set_name")) # 打印集合长度
r.srem("set_name","a") # 删除集合中的元素
print(r.smembers("set_name"))
r.sadd("set_name1","c","d","e")
print(r.sinter("set_name","set_name1")) # 打印集合的交集
print(r.sunion("set_name","set_name1")) # 打印集合的并集
print (r.sismember("set_name1","d")) # 判断集合中是否存在元素
print (r.spop("set_name1")) # 删除集合中最右边的一个元素
print(r.smembers("set_name1"))
运行结果:
set(['a', 'c', 'b'])
3
set(['c', 'b'])
set(['c'])
set(['c', 'b', 'e', 'd'])
True
e
set(['c', 'd'])
四、Hash类型操作
Redis在内存中存储hash类型是以name对应一个字典形式存储的
1)hset(name,key,value)
name对应的hash中设置一个键值对(不存在,则创建;否则,修改)
参数:
name:redis的name
key:key1对应的hash中的key
value:value1对应的hash中的value
注:hsetx(name,key,value),当name对应的hash中不存在当前key则创建(相当于添加)
2)hget(name,key)
在name对应的hash中获取根据key获取value
3)hmset(name,mapping)
在name对应的hash中批量设置键值对
参数:
name:redis的name
mapping:字典,如{'k1':'v1','k2','v2'}
4)hmget(name,keys,*args)
在name对应的hash中获取多个key的值
参数:
name:redis对应的name
keys:要获取key的集合,如:['k1','k2','k3']
*args:要获取的key,如:k1,k2,k3
5)hgetall(name)
获取name对应hash的所有键值
6)hlen(name)
获取name对应的hash中键值的个数
7)hkeys(name)
获取name对应的hash中所有的key的值
8)hvals(name)
获取name对应的hash中所有的value的值
9)hexists(name,key)
检查name对应的hash是否存在当前传入的key
10)hdel(name,*keys)
将name对应的hash中指定key的键值对删除
例子:
import redis
redis_config = {
"host": "192.168.2.230",
"port":6379,
"db":0
}
r = redis.Redis(**redis_config)
r.hset("dict1","name","zhao") # 添加字典一对值
print(r.hget("dict1","name")) # 打印字典值
r.hmset("dict1",{"age":27,"sex":"man"}) # 添加一个字典多对值
print (r.hmget("dict1","age","sex")) # 打印一个字典多对值
print(r.hgetall("dict1")) # 打印一个字典全部值
print(r.hlen("dict1")) # 字典长度
print(r.hkeys("dict1")) # 字典所有key
print(r.hvals("dict1")) # 字典所有value
print(r.hexists("dict1","age")) # 判断字典key是否存在
r.hdel("dict1","age") # 删除字典某个key
print(r.hgetall("dict1"))
运行结果:
zhao
['27', 'man']
{'age': '27', 'name': 'zhao', 'sex': 'man'}
3
['name', 'sex', 'age']
['zhao', 'man', '27']
True
{'name': 'zhao', 'sex': 'man'}
五、其他常用操作
1)delete(*names)
根据name删除redis中的任意数据类型
2)exists(name)
检测redis的name是否存在
3)keys(pattern='*')
根据* ?等通配符匹配获取redis的name
4)expire(name ,time)
为某个name设置超时时间
5)rename(src, dst)
重命名
6)move(name, db))
移动key至指定的库下
7)type(name)
获取name对应值的类型
例子:
import redis
redis_config = {
"host": "192.168.2.230",
"port":6379,
"db":0
}
r = redis.Redis(**redis_config)
r.set("name","hello")
r.delete("name1") # 删除key
print(r.keys())
print(r.type("name")) # 打印key类型
r.rename("name","name1") # 重命名key
print(r.exists("name")) # 判断key是否存在
r.move("dict1",1) # 移动key至其他库
睡前人工智能共享实验室新功能上线啦!