redis | 三、redis基本知识

2022-09-21 11:39:16 浏览数 (1)

redis系列文章: https://liudongdong.top/categories/redis 本篇来源: https://liudongdong.top/archives/redissan-redis-ji-ben-zhi-shi 公众号:雨中散步撒哈拉 备注:欢迎关注公众号,一起学习,共同进步!

一、远程连接

1. 下载

关注公众号雨中散步撒哈拉,回复关键词020,进行下载

推荐俩个工具rdm或者another-redis

image.png

2. 连接

填写远程信息,进行连接

image.png

another-redis界面

image.png

rmd界面

image.png

二、测试性能

Redis 自带一个压测工具 redis-benchmark,有以下可选参数

image.png

1. 进入容器

代码语言:javascript复制
docker exec -it docker_redis /bin/bash

# 进入容器执行
redis-benchmark -p 6379 -c 100 -n 100000

image.png

2. 查看终端输出

image.png

上半部分代表 100 个并发写入 10w 条数据,每次写入 3 个字节,keep-alive:1 代表服务器数量只有 1 台,并且在没有开启多线程的情况下只花了 2.86s ( tips:多线程是 redis 6.0 新增的 )

下半部分代表在 42.815ms 内处理完成全部请求

3. 查看检测设备

image.png

三、Redis 基本知识

redis官网:http://redis.cn/

Redis 是一个基于 C 语言编写的,是可基于内存也可持久化的日志型 K-V 数据库,并提供多种语言的 API。可用作数据库,缓存和消息中间件

Redis 会周期性的把更新的数据写入磁盘或是把修改操作写入到追加的记录文件,并在此基础上完成主从复制

1. Redis 能干啥?

  1. 支持内存存储和持久化 ( EDB / AOF )
  2. 效率高,支持高并发,可以用做高速缓存
  3. 可以用于发布-订阅模式
  4. 地图信息分析
  5. 计数器,计时器
  6. 数据类型多样
  7. 支持集群和事务

2. Redis基本命令

1. redis数据库

Redis 默认有 16 个数据库,起始数据库为 0 号,可以使用命令

image.png

切换数据库

代码语言:javascript复制
select 号数

清空当前数据库

代码语言:javascript复制
flushdb

清除所有的数据库

代码语言:javascript复制
flushall

2. redis中的key

查看当前数据库所有的 key

代码语言:javascript复制
keys *

3. Redis单线程&多线程

Redis 在 6.0 之前只是单线程的,6.0 之后则支持多线程了,但是 Redis 在单线程下依旧很快,这是为什么呢?

其实,严格来说,Redis Server 是多线程的,只是它请求处理的整个流程是单线程处理的,所以所谓的 Redis 单线程快指的是其请求处理过程使用单线程时非常快,其中的原因有以下几点

  1. 纯内存操作,并且 Redis 是基于 C 编写的
  2. 使用 IO 多路复用
  3. 非 CPU 密集型任务
  4. 单线程带来的优势
  5. 没有多线程的上下文切换造成的开销
  6. 没有访问共享资源加锁造成的开销

Redis 6.0 引入的多线程其实是用来完成请求数据的协议解析,而对于请求处理阶段依然是单线程排队处理的

4. 题外话

为什么 Redis 选择 6379 作为端口号?

6379 在手机按键上是 MERZ 对应的号码,而 MERZ 取自意大利女歌手 Alessia Merz 的名字,Redis 作者 Antirez 早年看电视节目,觉得 Merz 在节目中的一些话愚蠢可笑,Antirez 喜欢造“梗”用于平时和朋友们交流,于是造了一个词 "MERZ",形容愚蠢,与 "stupid" 含义相同

后来 Antirez 重新定义了 "MERZ" ,形容”具有很高的技术价值,包含技艺、耐心和劳动,但仍然保持简单本质“

四、RedisKey 的基本命令

创建一个键值对

代码语言:javascript复制
set key value

删除键值对

代码语言:javascript复制
del key

查看当前数据库中所有键

代码语言:javascript复制
keys *

判断是否存在某个键,如果存在则返回 1,否则返回 0

代码语言:javascript复制
exists key

移动指定 key 到指定库

代码语言:javascript复制
move key 库号

为 key 设置过期时间

代码语言:javascript复制
expire key 过期时间/s

然后使用命令

代码语言:javascript复制
ttl key

查看该 key 还有多久过期,如果该 key 不会过期则返回 -1,该 key 不存在则返回 -2,否则返回过期时间的倒计时

查看 key 对应 value 的数据类型

代码语言:javascript复制
type key

--- EOF ---

0 人点赞