Redis 入门
Redis 的安装
使用 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使用
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>使用
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读写的功能将交给其他线程去做。
最后更新于
这有帮助吗?