1. Redis是什么?
Redis是一个开源、内存中的数据结构存储实现,用作数据库、缓存和消息队列代理。它支持数据结构如字符串、哈希、列表、集合等。
使用Redis可以很好的解决高并发请求下的数据读写操作问题,提供快速操作的支持。
简单来说 Redis 就是一个内存中的(也可以持久化到磁盘中)存储键值对的数据结构服务器,支持丰富的数据结构,可以支持多达数万并发连接。
2. Redis的优缺点
2.1 优点
稳定可靠
Redis是一个非常稳定的Key-Value数据库,在互联网技术快速发展的过程中,Redis已经被证实是非常值得信赖的,Redis的主从复制可以很好的支持高并发。此外,Redis支持多数据结构、支持持久化机制以及支持Lua脚本等,都是非常优秀的。
速度快,性能好
Redis支持内存存储、键值对存储、多结构存储,相当快。性能方面非常优秀,特别是读写性能。
丰富的数据类型
Redis特别适合构建数据较复杂的应用程序,它高效的支持string、set、hash、list、zset和有序集合等这些数据类型,可以使用这些类型完成很多有趣的操作和问题。
2.2 缺点
持久化问题
Redis是一款内存数据库,意味着数据的持久化需要通过RDB和AOF两种持久化机制进行实现。但是这种对磁盘频繁的写入可能对IO提出一定压力。
在线扩容问题
在线扩容是Redis常见的问题之一。因为Redis本身的每个Key-Value存储在一台服务器上,当数据量增长到一定程度时,单台服务器就会出现瓶颈,此时需要扩容。但是Redis并不支持在线扩容,只支持后期添加节点,不能真正意义上的通过在线扩容来实现集群的稳定。
3. Redis的基本使用方式
Redis是一个支持多数据结构的数据库,我们要对这些数据结构进行添加、查询、删除、修改等操作可以使用如下方式进行:
3.1 连接Redis
import redis
# 默认连接
redis_connection = redis.Redis()
3.2 操作key-value
Redis通过Key-Value结构存储,我们可以通过Redis的python客户端完成Key-Value的添加、删除、查询等操作,具体如下:
# 添加字符串类型的数据到Redis中
redis_connection.set('name', 'Tom')
# 获取指定key的数据
name = redis_connection.get('name')
# 删除指定key的数据
redis_connection.delete('name')
# 判断key是否存在
is_exist = redis_connection.exists('name')
3.3 操作Hash类型
使用Redis存储散列数据类型
# 添加hash类型数据到Redis中
redis_connection.hset('user', 'name', 'Tom')
redis_connection.hset('user', 'age', '20')
# 获取hash中的单个值
name = redis_connection.hget('user', 'name')
# 获取整个hash数据
user = redis_connection.hgetall('user')
# 删除hash数据中的指定key
redis_connection.hdel('user', 'name')
# 获取整个hash数据
user = redis_connection.hgetall('user')
3.4 操作list类型
Redis还支持列表数据类型
# 添加list类型到 Redis 中
redis_connection.lpush('list', 'a')
redis_connection.lpush('list', 'b')
redis_connection.lpush('list', 'c')
# 获取指定区间内的list数据,下标从0开始计算
list_range = redis_connection.lrange('list', 0, 2)
# 获取list中所有数据
list_data = redis_connection.lrange('list', 0, -1)
# 通过索引获取list中指定元素
index_data = redis_connection.lindex('list', 0)
# 获取list中元素的个数
length = redis_connection.llen('list')
# 弹出左侧数据,即从左边出队
left_pop_data = redis_connection.lpop('list')
# 弹出右侧数据,即从右边出队
right_pop_data = redis_connection.rpop('list')