一、字符串操作
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操作才执行'''
2)get(name) # 获取值
3)mset() # 批量设置值
4)mget(keys, *args) # 批量获取值
5)append(name, value) # 追加
例子:
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至其他库 |