redis-读懂redis
Redis是一个开源的使用C语言编写、支持网络、可基于内存亦可持久化的日志型、Key-Value数据库,并提供多种语言的API。
- 安装与使用
Redis可以在其官方网站上下载,解压后,进入redis目录,编译源码:
make
编译后,在src目录下,有几个可执行文件redis-server、redis-cli等,运行Redis服务:
./redis-server
在另一个终端运行Redis客户端:
./redis-cli
在Redis客户端,可以执行Redis命令,如:
set key value
get key
- 数据类型
Redis支持的数据类型包括字符串、列表、集合、有序集合、哈希表等。
例如,在Redis客户端执行:
# 字符串
set mykey "Hello"
get mykey
# 列表
lpush mylist a b c
lrange mylist 0 -1
# 集合
sadd myset "Hello" "World"
smembers myset
# 有序集合
zadd myzset 1 "one"
zrange myzset 0 -1 withscores
# 哈希表
hset myhash field1 "Hello"
hget myhash field1
- 持久化
Redis支持两种持久化方式,RDB(默认)和AOF。
RDB,在指定的时间间隔内将内存中的数据集快照写入磁盘,也就是Snapshotting。
AOF,保存Redis服务器所执行的所有写操作命令到文件。
可以在redis.conf中配置持久化:
# RDB
save 900 1
save 300 10
save 60 10000
# AOF
appendonly yes
appendfsync everysec
- 事务
Redis的事务可以一次执行多个命令,本身是串行的,但不保证原子性。
multi
set key1 value1
set key2 value2
exec
- 发布/订阅
Redis的发布/订阅机制允许客户端订阅一个或多个频道,发送消息到频道,其他订阅了该频道的客户端会收到消息。
# 订阅频道
subscribe mychannel
# 发布消息
publish mychannel "Hello World"
- 主从同步
Redis支持主从同步,从服务器自动同步主服务器的数据。
在redis.conf中配置:
slaveof <master-ip> <master-port>
- 分片
Redis支持分片,即分布式存储数据。
可以通过Redis Cluster或者客户端分片来实现。
- 安全性
Redis支持使用密码和TLS/SSL来保证安全性。
在redis.conf中配置:
requirepass yourpassword
tls-port 6379
在客户端连接时使用AUTH命令:
auth yourpassword
- 性能
Redis使用了单线程模型,基于内存操作,读写速度非常快。
- 应用场景
Redis可以应用在缓存、排行榜、计数器、分布式会话、分布式锁等场景。
例如,使用Redis做缓存:
import redis
r = redis.Red
评论已关闭