Redis入门

本文详细介绍了Redis的概述、Windows和Linux的安装过程,包括其作为内存数据库的特点、数据持久化、发布订阅机制以及基本操作。还讨论了为何Redis选择单线程设计及其高性能原因。
摘要由CSDN通过智能技术生成

目录

一、概述

二、Windows安装

三、Linux安装

四、基础知识说明


一、概述

Redis是什么

Redis:REmote DIctionary Server(远程字典服务器)

是完全开源免费的,用C语言编写的,遵守BSD协议,是一个高性能的(Key/Value)分布式内存数据 库,基于内存运行,并支持持久化的NoSQL数据库,是当前最热门的NoSQL数据库之一,也被人们称为 数据结构服务器

Redis与其他key-value缓存产品有以下三个特点

  • Redis支持数据的持久化,可以将内存中的数据保持在磁盘中,重启的时候可以再次加载进行使 用。
  • Redis不仅仅支持简单的 key-value 类型的数据,同时还提供list、set、zset、hash等数据结构的存 储。
  • Redis支持数据的备份,即master-slave模式的数据备份。

 Redis能干嘛

内存存储和持久化:redis支持异步将内存中的数据写到硬盘上,同时不影响继续服务 取最新N个数据的操作,如:可以将最新的10条评论的ID放在Redis的List集合里面  

发布、订阅消息系统

地图信息分析

定时器、计数器

......  

特性 

数据类型、基本操作和配置

持久化和复制,RDB、AOF

事务的控制

.....  

常用网站  

https://redis.io/ 官网

http://www.redis.cn 中文网  

二、Windows安装

 下载地址:https://github.com/dmajkic/redis/downloads ( 素材提供 )

解压到自己电脑的环境目录即可

双击 redis-server.exe 启动即可 

通过客户端去访问 redis-cli   

三、Linux安装

 下载地址 http://download.redis.io/releases/redis-5.0.7.tar.gz

 

安装步骤  

1、下载获得 redis-5.0.7.tar.gz 后将它放到我们Linux的目录下 /opt

2、/opt 目录下,解压命令 : tar -zxvf redis-5.0.7.tar.gz

3、解压完成后出现文件夹:redis-5.0.7

4、进入目录: cd redis-5.0.7

5、在 redis-5.0.7 目录下执行 make 命令  

6、如果make完成后继续执行 make install

7、查看默认安装目录:usr/local/bin  

8、拷贝配置文件(备用) 

 

  • A、redis.conf配置文件中daemonize守护线程,默认是NO。
  • B、daemonize是用来指定redis是否要用守护线程的方式启动。  

daemonize 设置yes或者no区别 

  • daemonize:yes
    • redis采用的是单进程多线程的模式。当redis.conf中选项daemonize设置成yes时,代表开启 守护进程模式。在该模式下,redis会在后台运行,并将进程pid号写入至redis.conf选项 pidfile设置的文件中,此时redis将一直运行,除非手动kill该进程。
  • daemonize:no
    • 当daemonize选项设置成no时,当前界面将进入redis的命令行界面,exit强制退出或者关闭 连接工具(putty,xshell等)都会导致redis进程退出。 

9、启动测试一下! 

# 【shell】启动redis服务
[root@192 bin]# cd /usr/local/bin
[root@192 bin]# redis-server /opt/redis-5.0.7/redis.conf
# redis客户端连接===> 观察地址的变化,如果连接ok,是直接连上的,redis默认端口号 6379
[root@192 bin]# redis-cli -p 6379
127.0.0.1:6379> ping
PONG
127.0.0.1:6379> set k1 helloworld
OK
127.0.0.1:6379> get k1
"helloworld"
# 【shell】ps显示系统当前进程信息
[root@192 myredis]# ps -ef|grep redis
root      16005      1  0 04:45 ?        00:00:00 redis-server 
127.0.0.1:6379
root      16031  15692  0 04:47 pts/0    00:00:00 redis-cli -p 6379
root      16107  16076  0 04:51 pts/2    00:00:00 grep --color=auto redis
# 【redis】关闭连接
127.0.0.1:6379> shutdown
not connected> exit
# 【shell】ps显示系统当前进程信息
[root@192 myredis]# ps -ef|grep redis
root      16140  16076  0 04:53 pts/2    00:00:00 grep --color=auto redis

四、基础知识说明

 准备工作:开启redis服务,客户端连接

redis压力测试工具-----Redis-benchmark  

Redis-benchmark是官方自带的Redis性能测试工具,可以有效的测试Redis服务的性能。 

redis 性能测试工具可选参数如下所示:  

# 测试一:100个并发连接,100000个请求,检测host为localhost 端口为6379的redis服务器性
能 
redis-benchmark -h localhost -p 6379 -c 100 -n 100000 
# 测试出来的所有命令只举例一个!
====== SET ======
  100000 requests completed in 1.88 seconds # 对集合写入测试
  100 parallel clients # 每次请求有100个并发客户端
  3 bytes payload # 每次写入3个字节的数据,有效载荷
 keep alive: 1   # 保持一个连接,一台服务器来处理这些请求
17.05% <= 1 milliseconds
97.35% <= 2 milliseconds
99.97% <= 3 milliseconds
100.00% <= 3 milliseconds # 所有请求在 3 毫秒内完成
53248.14 requests per second # 每秒处理 53248.14 次请求

 基本数据库常识

默认16个数据库,类似数组下标从零开始,初始默认使用零号库 

查看 redis.conf ,里面有默认的配置
databases 16
# Set the number of databases. The default database is DB 0, you can select
# a different one on a per-connection basis using SELECT <dbid> where
# dbid is a number between 0 and 'databases'-1
databases 16

Select命令切换数据库 

127.0.0.1:6379> select 7
OK
127.0.0.1:6379[7]>
# 不同的库可以存不同的数据

Dbsize查看当前数据库的key的数量 

127.0.0.1:6379> select 7
OK
127.0.0.1:6379[7]> DBSIZE
(integer) 0
127.0.0.1:6379[7]> select 0
OK
127.0.0.1:6379> DBSIZE
(integer) 5
127.0.0.1:6379> keys * # 查看具体的key
1) "counter:__rand_int__"
2) "mylist"
3) "k1"
4) "myset:__rand_int__"
5) "key:__rand_int__"

Flushdb:清空当前库

Flushall:清空全部的库

127.0.0.1:6379> DBSIZE
(integer) 5
127.0.0.1:6379> FLUSHDB
OK
127.0.0.1:6379> DBSIZE
(integer) 0

为什么默认端口是6379?粉丝效应! 

为什么redis是单线程  

我们首先要明白,Redis很快!官方表示,因为Redis是基于内存的操作,CPU不是Redis的瓶颈,Redis 的瓶颈最有可能是机器内存的大小或者网络带宽。既然单线程容易实现,而且CPU不会成为瓶颈,那就 顺理成章地采用单线程的方案了! 

Redis采用的是基于内存的采用的是单进程单线程模型的 KV 数据库,由C语言编写,官方提供的数据是 可以达到100000+的QPS(每秒内查询次数)。这个数据不比采用单进程多线程的同样基于内存的 KV 数据库 Memcached 差! 

Redis为什么这么快?  

1)以前一直有个误区,以为:高性能服务器 一定是多线程来实现的 原因很简单因为误区二导致的:多线程 一定比 单线程 效率高,其实不然! 在说这个事前希望大家都能对 CPU 、 内存 、 硬盘的速度都有了解了!

2)redis 核心就是 如果我的数据全都在内存里,我单线程的去操作 就是效率最高的,为什么呢,因为 多线程的本质就是 CPU 模拟出来多个线程的情况,这种模拟出来的情况就有一个代价,就是上下文的切 换,对于一个内存的系统来说,它没有上下文的切换就是效率最高的。redis 用 单个CPU 绑定一块内存 的数据,然后针对这块内存的数据进行多次读写的时候,都是在一个CPU上完成的,所以它是单线程处 理这个事。在内存的情况下,这个方案就是最佳方案。 因为一次CPU上下文的切换大概在 1500ns 左右。从内存中读取 1MB 的连续数据,耗时大约为 250us, 假设1MB的数据由多个线程读取了1000次,那么就有1000次时间上下文的切换,那么就有1500ns * 1000 = 1500us ,我单线程的读完1MB数据才250us ,你光时间上下文的切换就用了1500us了,我还不 算你每次读一点数据 的时间。  

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值