Redis介绍
redis是key-value型的存储系统,支持多种数据结构,包括String、List、Set、Zset和Hash。其数据都缓存在内存中,但是会定时将数据写入磁盘。
一、redis的特点
1、数据存储在内存中,读取写入速度快
2、支持持久化,定时将数据写入磁盘。
3、支持五种数据类型,但是不支持嵌套。
4、支持事务,要么都执行要么都不执行。
二、redis操作
连接redis:
1 #方式一:直接连接2 import redis3 conn = redis.Redis(host="127.0.0.1", port=6379, password=xxxx)4 5 6 #方式二:创建连接池7 pool = redis.ConnectionPool(host="127.0.0.1", port=6379, password=xxxx, max_connections=100)8 conn = redis.Redis(connection_pool=pool)
全局操作:
conn.keys() #取到所有的键#redis可以使用模糊匹配,*代表任意多个字符, ?代表一个字符, [k,m]代表匹配中括号内的字符conn.delete("name") #删除一个键值conn.flushall() #删除所有键值conn.exists("name") #查看这个键是否存在conn.rename(old, new) #重命名一个键conn.randomkey() #随机获取一个键scan_iter(name) #返回一个迭代器,防止值太多导致系统崩溃
事务:
1 pipe = conn.pipeline(transation=True)2 pipe.multi()3 xxxx4 pipe.execute()
1、String操作
1 conn.set(k, v) #设置单个值2 conn.get(k) #获取单个值3 conn.mset({k1:v1, k2:v2}) #批量设置值4 conn.mget(k1, k2) #批量获取值
2、List操作
1 conn.lpush(name, val) #向列表最左边存放数据 2 conn.rpush(name,val) # 向列表最右边存放数据 3 conn.lpop(name) #取出最左边的值 4 conn.rpop(name) #取出最右边的值 5 6 conn.lrange(name, start, end) #取出列表一定范围内的值 7 conn.lindex(name, index) #取出该索引位置的值 8 conn.llen(name) #查看列表长度 9 10 #自定义增量迭代11 #如果想取出列表中的所有值,需要自定义一个函数,一个值一个值取,防止程序崩溃。12 def get_list(name)13 length = conn.llen(name)14 for index in range(length):15 yield conn.lindex(name, index)16 17 for i in get_list("xxx"):18 print(i)
3、Hash操作
1 conn.hset(name, key, val) #设置值 2 conn.hget(name, key) #取值 3 conn.hmset(name, {k1:v1, k2:v2}) #批量设置值 4 #conn.hmget(name, k1, k2) 5 conn.hmget(name, [k1, k2]) #批量获取值 6 conn.hgetall(name) #获取所有键值 7 8 conn.hlen(name) #获取键值对个数 9 conn.hkeys(name) #获取所有的键10 conn.hvals(name) #获取所有的值11 conn.hexists(name, key) #检查是否存在对应的键12 conn.hdel(name, key) #删除13 14 conn.hscan_iter(name) #批量获取键值15 #for k,v in conn.hscan_iter(name):16 # print(k, v)
4、Set操作(集合可以用来去重)
1 conn.sadd(name, val) #给集合添加元素2 conn.spop(name) #从集合右侧取出并删除一个值3 conn.smembers(name) #获取name对应集合的所有元素4 conn.sismember(name, val) #检验是否是该集合的值5 6 conn.sscan_iter()
5、Sorted Set(有序集合)
1 conn.zadd(name,k1=1,k2=2) #添加值和优先级