Redis 入门

Redis 的安装

  1. 使用 Docker 运行 Redis:docker run --name redis -d redis

  redis docker run --name redis -d redis
fd4d81e5b4d509aed545113f525f057dbc66e8ec6403d08144b7212b6f305b31
  redis docker ps -a
CONTAINER ID   IMAGE     COMMAND                  CREATED         STATUS         PORTS      NAMES
fd4d81e5b4d5   redis     "docker-entrypoint.s…"   5 seconds ago   Up 4 seconds   6379/tcp   redis
  1. 使用 redis docker exec -i -t redis redis-cli 连接 Redis

  redis docker exec -i -t redis redis-cli
127.0.0.1:6379> ping
PONG
127.0.0.1:6379> set name alpha
OK
127.0.0.1:6379> get name
"alpha"
127.0.0.1:6379> keys *
1) "name"
127.0.0.1:6379>
  1. 使用 shutdown 关闭 Redis

redis-benchmark 压力测试工具

redis-benchmark 是官方自带的压力测试工具。

详细使用方式参考 Redis 官方文档

测试:使用 20 个并发线程发送 100,000 个请求 redis-benchmark -h localhost -p 6379 -n 100000 -c 20

测试结果部分截图

Redis 基础

Redis 默认 16 个数据库,默认使用数据库 0,使用 SELECT <dbid> 切换数据库

Redis 端口号的由来

来自 Redis 作者本人的回答 Appendix: how to remember the Redis port number

Today on Twitter I saw a tweet related to the ability to remember the Redis port number. There is a trick, the Redis port number, 6379, is MERZ at the phone keyboard.

Is it a coincidence that it sounds not random enough? Actually not ;) I selected 6379 because of MERZ, and not the other way around.

Redis 是单线程的

Redis 基于内存操作,CPU 并不是 Redis 性能瓶颈,Redis 的性能瓶颈来自于机器的内存和网络带宽。

Redis is single-threaded, then how does it do concurrent I/O?

单线程程序肯定可以通过使用 I/O(解)复用机制和事件循环(Redis 就是这样做的)在 I/O 级别提供并发。

并行是有代价的:在现代硬件上可以找到多个套接字/多个内核,线程之间的同步非常昂贵。另一方面,像 Redis 这样的高效存储引擎的瓶颈往往是网络,远早于 CPU。因此,隔离事件循环(不需要同步)被视为构建高效、可扩展服务器的良好设计。

Redis 操作是原子的这一事实仅仅是单线程事件循环的结果。有趣的是原子性是免费提供的(它不需要同步)。用户可以利用它来实现乐观锁定和其他模式,而无需支付同步开销。

自 Redis 6 官方开始支持多线程,但是核心的数据访问接口仍然是单线程的,I/O读写的功能将交给其他线程去做。

最后更新于

这有帮助吗?