简单认识和操作Redis(Python)

1)Redis简介:

Redis是什么?

redis是一个高性能的key-value数据库,它是完全开源免费的,而且redis是一个NOSQL类型数据库,是为了解决高并发、高扩展,大数据存储等一系列的问题而产生的数据库解决方案,是一个非关系型的数据库。但是,它也是不能替代关系型数据库,只能作为特定环境下的扩充。

redis是一个以key-value存储的数据库结构型服务器,它支持的数据结构类型包括:字符串(String)、链表(lists)、哈希表(hash)、集合(set)、有序集合(Zset)等。为了保证读取的效率,redis把数据对象都存储在内存当中,它可以支持周期性的把更新的数据写入磁盘文件中。而且它还提供了交集和并集,以及一些不同方式排序的操作。

Redis 优势

  • 性能极高 – Redis能读的速度是110000次/s,写的速度是81000次/s 。
  • 丰富的数据类型 – Redis支持二进制案例的 Strings, Lists, Hashes, Sets 及 Ordered Sets
    数据类型操作。
  • 原子 – Redis的所有操作都是原子性的,意思就是要么成功执行要么失败完全不执行。单个操作是原子性的。多个操作也支持事务,即原子性,通过MULTI和EXEC指令包起来。
  • 丰富的特性 – Redis还支持 publish/subscribe, 通知, key 过期等等特性。

Redis 数据结构

  1. STRING类型:”key“:”value“ ,其中key是唯一的,value可以重复
  2. Hash类型:”name“:”key“,”value“ ,name相当于一个组的名字,key和value可以理解为和STRING类型用法一致,同一个name中可以存在多个key-value
  3. List类型:”name“,”index“,”value“,和hash类型的区别就是index替换了key,一个index对应一个value
  4. Set类型:“name”,“values”,Set集合就是不允许重复的列表,其中values可以是多个值
  5. Zset类型:(name, args, *kwargs),在集合的基础上,为每元素排序,元素的排序需要根据另外一个值来进行比较,所以,对于有序集合,每一个元素有两个值,即:值和分数,分数专门用来做排序。

2)Redis操作:

第一步,连接Redis

pool = redis.ConnectionPool(host=local_name, port=port_name, password=password,db=0, decode_responses=True)
global r   #这里把r创建成全局变量
r = redis.StrictRedis(connection_pool=pool)

str类型简单操作

r.set("sp_name","syz") #先创建
time.sleep(2)
print("redis查询结果",r.get("sp_name"))#查询
time.sleep(2)
r.set("sp_name","syz9527")#修改
time.sleep(2)
print("redis查询结果", r.get("sp_name"))

Hash类型简单操作

r.hset("sp_hset","syz01","s001") #创建数据
r.hset("sp_hset", "syz02", "s002")#创建数据
# time.sleep(2)
print("redis查询结果",r.hget("sp_hset","syz01"))#按key查询value
time.sleep(2)
r.hset("sp_hset", "syz01", "s002")#修改
r.hset("sp_hset", "syz02", "s003")
time.sleep(2)
print("redis查询结果", r.hget("sp_hset", "syz01"))
print("redis查询结果", r.hgetall("sp_hset"))
print("redis查询结果,获取hash中所有的value的值",r.hvals("sp_hset"))

List类型简单操作

r.rpush("syz_list","syz001","syz002","syz003","syz004")#创建数据
print("redis查询结果", r.lrange("syz_list",0,r.llen("syz_list")))
time.sleep(2)
r.lset("syz_list",0,"syz123")#修改
print("redis查询结果", r.lrange("syz_list",0,r.llen("syz_list")))

Set类型简单操作

r.sadd("syz_set","aa","bb","cc") #创建数据
print("redis查询结果", r.smembers("syz_set"))
time.sleep(2)
r.sadd("syz_set", "888")#追加
time.sleep(2)
print("redis查询结果", r.smembers("syz_set"))

zSet类型简单操作

mapping = {"s1":1,"s2":2,"s3":3}#创建数据
r.zadd("syz_zset",mapping)
print("redis查询结果",r.zscan(name="syz_zset"))
time.sleep(2)
mapping = {"s1":10}
r.zadd("syz_zset", mapping)#修改
time.sleep(2)
print("redis查询结果", r.zscan(name="syz_zset"))