redis学习(一)

Redis

一、基本概述

1、Redis是什么?

Redis(Remote Dictionary Server),即远程字典服务!
是一个开源的使用ANSI C语言编写、支持网络、可基于内存亦可持久化的日志型、Key-Value的数据库,并提供多种语言的API。

2、Redis能干嘛?

1、内存存储、持久化、内存中是断电即失,所以持久化很重要(rdb、aof)
2、效率高,可用于高速缓存
3、发布订阅系统
4、地图信息分析
5、计时器、计数器(浏览量)
6、…….

3、特性

1、多样的数据类型
2、持久化
3、集群
4、事务
……

二、Linux下Redis安装

Centos系统

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
# 下载redis
wget https://download.redis.io/releases/redis-6.2.6.tar.gz
# 解压Redis
tar -zxf redis-6.2.6.tar.gz
# 切换到root用户
su
# 输入密码,回车即可
# 将redis安装目录放在/usr/local
mv download/redis-6.2.6 /usr/local/
# 基本的环境安装,redis需要gcc环境
yum install gcc-c++
# 编译
make
make install
# redis的默认安装路径 /usr/local/bin
# 创建redis的配置文件夹
mkdir redis_config
# 拷贝解压环境下的配置文件至安装目录
cp /usr/local/redis-6.2.6/redis.conf redis_config/
# 编辑redis.conf文件
vim redis.conf
# 在显示内容中 输入/daemonize 查找对应记录 按n查找下一个记录
# 将daemonize 修改为yes,将redis修改为后台启动
daemonize yes
# 点击esc,输入:wq保存

redis的默认安装路径如下

img

redis.conf文件配置

img

三、Redis启动

3.1 启动

1
2
3
4
5
6
7
8
9
10
11
# 确保在/usr/loacl/bin目录下
# 开启redis服务
redis-server redis_config/redis.conf
# 客户端连接
redis-cli -p 6379
# 检测连接是否成功,输入ping,输出pong
ping
# 基本set和get使用
set name ldg
get name
keys *

img

3.2 查看redis的进程是否开启

1
ps -ef |grep redis

img

3.3 关闭redis

1
2
redis-cli -p 6379
shutdown

img

四、测试性能

redis-benchmark是一个压力测试工具,官当自带的性能测试工具

img

简单测试:

1
2
# 测试,100个并发链接,100000请求
redis-benchmark -h localhost -p 6379 -c 100 -n 100000

写如下

1635049403794

读如下

1635049429942

五、基础知识

redis默认有16个数据库,默认使用的是第0个

1635049534927

可以使用select进行切换

1
2
3
4
127.0.0.1:6379> select 3 #切换第3个数据库
OK
127.0.0.1:6379[3]> dbsize # 查看数据库大小
(integer) 0

1635049706121

1
2
3
4
5
6
127.0.0.1:6379[3]> keys * #查看数据库所有的key
1) "name"
127.0.0.1:6379[3]> flushdb # 清空当前数据库
OK
127.0.0.1:6379> flushall #清空所有数据库
OK

Redis是单线程的!

官方表示,Redis是基于内存操作,CPU不是Redis性能瓶颈,Redis的瓶颈是根据机器的内存和网络带宽决定的,既然可以使用单线程来实现,就使用单线程了!

Redis是C语言写的,官方提供的数据为100000+的QPS,完全不比同样是使用key-value的Memecache差!

Redis为什么单线程还这么快?

1、误区1:高性能的服务器一定是多线程的!

2、误区2:多线程(CPU上下文切换)一定比单线程效率高

CPU > 内存 >硬盘(速度方面)

核心:Redis是将所有的数据全部存放在内存中,所以使用单线程去操作效率就是最高的,多线程(CPU上下文会切换:耗时的操作),对于内存系统来说,如果没有上下文切换效率就是最高的!多次读写都是在一个CPU上,在内存情况下,这个就是最佳的方案。

0%