Redis(1)简介

Redis(全称为Remote Dictionary Server)是一个开源的高性能键值对存储系统,具有快速、灵活和可扩展的特性。

它是一个基于内存的数据结构存储系统,可以用作数据库、缓存和消息代理。

Redis主要特点

高性能

Redis 数据存储在内存中,因此能够提供极快的读写操作。它采用单线程模型和异步 I/O,避免了多线程的竞争和阻塞,从而达到了非常高的性能。

数据结构多样

Redis 支持多种数据结构,包括字符串(String)、哈希(Hash)、列表(List)、集合(Set)和有序集合(Sorted Set)。

这些数据结构提供了丰富的操作命令,使得开发者可以方便地处理各种数据需求。

持久化支持

Redis 提供了两种持久化方式,即快照(Snapshotting)和日志追加(Append-only file,AOF)。

快照方式将 Redis 内存数据以二进制格式写入磁盘,而 AOF 则通过追加记录 Redis 的操作命令来实现持久化。

发布订阅

Redis 支持发布/订阅模式,可以用作消息代理。

发布者将消息发送到指定的频道,订阅者则可以接收和处理这些消息。

这种模式在构建实时通信、事件驱动系统和消息队列等场景中非常有用。

分布式缓存

Redis可以通过主从复制和分片来实现数据的分布式存储和高可用性。

主从复制可以将数据复制到多个从节点,实现读写分离和数据备份。

而分片则可以将数据分布在多个Redis节点上,实现横向扩展和负载均衡。

事务支持

Redis 支持事务,开发者可以将多个操作组合成一个原子性的操作序列,保证这些操作要么全部执行成功,要么全部不执行。

功能丰富

Redis不仅仅是一个简单的缓存,它还提供了许多其他功能,如事务支持、Lua脚本执行、定时任务、原子操作等。

这使得开发者可以在Redis中实现更复杂的应用逻辑。

安装

Centos

安装redis。

1
$ sudo yum -y install redis

启动redis。

1
2
3
$ sudo systemctl enable redis
Created symlink from /etc/systemd/system/multi-user.target.wants/redis.service to /usr/lib/systemd/system/redis.service.
$ sudo systemctl start redis

检查redis进程。

1
2
3
$ ps -aux | grep redis
redis 1775 0.1 0.1 143056 5776 ? Ssl 15:05 0:00 /usr/bin/redis-server 127.0.0.1:6379
shuyi 1802 0.0 0.0 112780 704 pts/0 S+ 15:07 0:00 grep --color=auto redis

配置文件位置在/etc/redis.conf

启动的时候默认只能本地127.0.0.1连接,如果需要远程访问,需要修改配置,取消保护模式。

1
2
3
4
5
$ cat /etc/redis.conf
...
# bind 127.0.0.1
protected-mode no
...

如果不修改protected-mode字段,可能会出现下面的错误。

1
2
192.168.0.112:6379> set a b
(error) DENIED Redis is running in protected mode because protected mode is enabled, no bind address was specified, no authentication password is requested to clients. In this mode connections are only accepted from the loopback interface. If you want to connect from external computers to Redis you may adopt one of the following solutions: 1) Just disable protected mode sending the command 'CONFIG SET protected-mode no' from the loopback interface by connecting to Redis from the same host the server is running, however MAKE SURE Redis is not publicly accessible from internet if you do so. Use CONFIG REWRITE to make this change permanent. 2) Alternatively you can just disable the protected mode by editing the Redis configuration file, and setting the protected mode option to 'no', and then restarting the server. 3) If you started the server manually just for testing, restart it with the '--protected-mode no' option. 4) Setup a bind address or an authentication password. NOTE: You only need to do one of the above things in order for the server to start accepting connections from the outside.

如果需要设置密码,则需要修改配置文件中的requirepass字段,并且取消注释。

1
2
3
4
$ cat /etc/redis.conf
...
requirepass mypassword
...

然后重启redis服务。

1
$ sudo systemctl restart redis