手记

python操作redis

一、字符串操作

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 redisredis_config = {    "host""192.168.2.230",    "port":6379,    "db":0}= 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 redisredis_config = {    "host""192.168.2.230",    "port":6379,    "db":0}= 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 redisredis_config = {    "host""192.168.2.230",    "port":6379,    "db":0}= 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元素后面插入fprint(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 redisredis_config = {    "host""192.168.2.230",    "port":6379,    "db":0}= 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 redisredis_config = {    "host""192.168.2.230",    "port":6379,    "db":0}= 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"))                   # 字典所有keyprint(r.hvals("dict1"))                   # 字典所有valueprint(r.hexists("dict1","age"))          # 判断字典key是否存在 r.hdel("dict1","age")                     # 删除字典某个keyprint(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 redisredis_config = {    "host""192.168.2.230",    "port":6379,    "db":0}= redis.Redis(**redis_config)r.set("name","hello")r.delete("name1")          # 删除keyprint(r.keys()) print(r.type("name"))     # 打印key类型    r.rename("name","name1")  # 重命名key print(r.exists("name"))   # 判断key是否存在r.move("dict1",1)          # 移动key至其他库


0人推荐
随时随地看视频
慕课网APP