本文参照视屏学习整理:https://www.bilibili.com/video/av16841549/?p=9

相关软件、资料:

基本条件:有虚拟机或相关linux系统,熟悉基本linux操作

本文结构:

一、linux下redis安装

二、redis基本配置启动以及常用命令

三、redis 的五种基本数据及操作

四、redis主从复制和哨兵(sentinel)机制  简易集群

五、redis安全配置

一、linux下redis安装

1)、https://redis.io/  进入官方地址下载

2)、使用xftp5将暗安装包上传到服务器

3)、linux下创建redis文件夹并进行安装

   #将安装包解压到创建目录   需要在安装包所在目录下执行

   tar -zxvf redis-5.0.5.tar.gz -C/usr/local/src/

到redis5.5/src目录下执行make命令,可能出现

    a、错误一:gcc命令找不到,是由于没有安装gcc导致     执行

    yum -y install gcc

    

  注意:安装完gcc之后,再执行make,先执行 make distclean 清理一下上次make后产生的文件   

b、错误二: error: jemalloc/jemalloc.h: No such file or directory   执行

make MALLOC=libc

完成后,进入redis的src目录下,执行  ./redis-ser

安装成功!

二、redis基本配置

 1)、当输入Ctrl+c 退出时,redis会自动退出,这时需要执行

#后台启动redis 
./redis-server &
#后台启动redis 并保存日志
nohup ./redis-server &
#查看日志
cat nohup.out

  2)、查看redis 进程 :ps -ef|grep redis

      3)、关闭redis:  kill -9  redis进程号   或者  ./redis-cli shutdown 

    4)、客户端连接redis

  a、本地客户端连接:在src目录下    ./redis-cli        如果需要制定ip和端口:   ./redis-cli -h 127.0.0.1 -p 6379

  b、远程客户端需要进行配置,客户端工具:RedisDesktopManager

     修改redis.conf  文件,在src上一层目录

vim redis.conf

注释掉只允许本地连接

安全模式关闭,即改为no

完成后,启动客户端的方式需要指定配置文件:

#在redis的src目录下执行  ../代表上一级目录 用于读取配置文件
./redis-server ../redis.conf &

1、开放linux端口号6379(cento7下):

#先执行     查看当前linux 下已经开放的端口
firewall-cmd --list-ports
#开发6379端口
firewall-cmd --zone=public --add-port=6379/tcp --permanent
#显示success发现并没有6379,需要重启防火墙
systemctl restart firewalld.service

2、先在Windows系统中看能否连接该端口,如果telnet  命令不可用,可以百度下在系统中进行开启

打开软件,输入ip,点击测试连接,即可连接成功

3、java代码连接redis(springboot 1.0默认为Jedis   spring2.0已经修改为Lettuce)    此处先在idea环境下使用Jedis 进行演示

   

引入依赖

<dependency>

    <groupId>redis.clients</groupId>

    <artifactId>jedis</artifactId>

    <version>3.1.0</version>

</dependency>

java 代码


public class TestJedis {

    public static void main(String[] args) throws InterruptedException {
     //连接redis
Jedis jedis = new Jedis("192.168.233.10",6379);
     //放入值
jedis.set("k1","v1");
     //打印值
System.out.println(jedis.get("k1"));
jedis.setex("k1",3,"jjjsdf");
Thread.sleep(4000);
System.out.println(jedis.get("k1"));
}
}
 

运行main方法

致此,基本准备工作已经完成了!!!

三、redis 的物种数据类型:

1、字符串类型 string

2、哈希类型 hash

3、列表类型 list

4、集合类型 set

5、有序集合类型 zset (sorted set)

四、redis 主从复制

1、Redis提供了复制(replication)功能来自动实现多台redis服务器的数据同步

模拟步骤:

启动四个redis,一个座位主redis,其他作为从redis,启动多个redis不需要安装多个redis,只需要在启动时带着不同的配置文件,配置端口,信息不同即可

1、拷贝redis.conf 文件分别命名为redis6380.conf,需要清空掉以前配置

#拷贝配置文件
cp redis.conf redids6380.conf
#清空配置文件
> redis6380.conf
#修改配置文件
vim redis6380.conf 

2、在配置文件中添加以下配置

#原服务器配置文件(主redis)
include /usr/local/src/redis-5.0.5/redis.conf
#是否后台启动
daemonize yes
#端口
port 6380
#进程号文件
pidfile /var/run/redis_6380.pid
logfile 6380.log
#持久化文件
dbfilename dump6380.rdb

3、拷贝三份redis6380.conf文件 ,并修改为redis6381.conf,redis6382.conf,redis6383.conf,并修改其中的端口为相应的端口,在文件末尾添加:

#从服务器多这一行
slaveof 127.0.0.1

4、分别配置不同配置文件启动redis;

5、在主服务器6380中设置k1 v1 k2 v2 并获取值

再连接到6381 从服务器,获取k1  k2的值:

可以看到主从复制成功,可以连接到6381,6382也可以取到值

6、使用info replication命令可以查看到redis是主服务器还是从服务器

7、当主服务器出现问题时,服务器不能自动切换升级,需要使用

#将一台slave服务器提升为Master (提升某slave为master)

>slaveof no one
#将slave挂至新的master上
>slaveof 127.0.0.1  

将82挂在到81上:

8、哨兵Sentinel,可实时监控主服务器的运行状况,当主redis挂掉时,可以自动切换主服务器,并将其他服务器主动挂载到新的master服务器上

1)、首先需要拷贝Sentinel的配置文件

cp sentinel.conf sentinel26380.conf

只需要监视master即可,所以,修改配置

#6380为监视端口 2位投票数 当两个及以上从认为主挂了,则要进行切换

sentinel monitor mymaster 127.0.0.1  

  port 分别改为26380 26381 26382

  2)、根据不同配置文件启动哨兵

./redis-sentinel ../sentinel26380.conf &

查看6380详细信息,可以看到它为master

关闭掉6380服务,查看哨兵的日志:

master已经切换到6382 上的redis

查看6382的具体信息:

6382已经为master,在重启6381端口的redis

可看到他的master为6382端口的redis,他自己为从服务器

五、redis安全

未完,待续。。。。

 

1、主服务器
主服务器(master)
#原始服务器配置文件
include /usr/local/redis-3.2.9/redis.conf
#是否后台启动
daemonize yes
#端口
port 6380
#进程号文件
pidfile /var/run/redis_6380.pid
logfile 6380.log
#持久化文件
dbfilename dump6380.rdb

从服务器(slave)
include /usr/local/redis-3.2.9/redis.conf
daemonize yes
port 6382
pidfile /var/run/redis_6382.pid
logfile 6382.log
dbfilename dump6382.rdb
#从服务器多这一行
slaveof 127.0.0.1 6380

本地配置

#原服务器配置文件
include /home/levi/redis-5.0.5/redis.conf
#是否后台启动
daemonize yes
#端口
port 6380
pidfile /var/run/redis_6380.pid
logfile 6380.log
dbfilename dump6380.rdb

#只需要监视主
sentinel monitor mymaster 127.0.0.1 6379 2
6380为监视端口 2位投票数 当两个及以上从认为主挂了,则要进行切换

实际操作指令
190 cp redis6380.conf redis6381.conf
191 cp redis6380.conf redis6382.conf
192 vim redis6381.conf
193 vim redis6382.conf
194 ll
195 vim redis6381
196 ll
197 vimi redis6381.conf
198 vim redis6381.conf
199 vim redis6382.conf
200 ps -ef|grep redis
201 kill -9 3323
202 ps -ef|grep redis
203 cd src/
204 ./redis-server ../redis6380.conf
205 ./redis-server ../redis6381.conf
206 ./redis-server ../redis6383.conf
207 ./redis-server ../redis6382.conf
208 ps -ef|grep redis
209 ./redis-cli -p 6380
210 history
211 cd ..
212 vim redis.conf
213 cd src/
214 ./redis-cli
215 ./redis-server ../redis6380.conf
216 ps -ef|grep redis
217 slaveof 127.0.0.1 6381
218 ./redis-cli -p 6380
219 cd ..
220 ll
221 cp sentinel.conf sentinel26380.conf
222 cp sentinel.conf sentinel26381.conf
223 cp sentinel.conf sentinel26382.conf
224 vim sentinel26380.c
225 vim sentinel26380.conf
226 vim sentinel26381.conf
227 vim sentinel26382.conf
228 cd src/
229 ./redis-sentinel ../sentinel26380.conf
230 ./redis-cli -p 6381
231 ./redis-cli -p 6380
232 ./redis-server ../redis6380.conf
233 ./redis-cli -p 6380
234 history

一文学会redis从零到入门的更多相关文章

  1. 【JAVA零基础入门系列】Day12 Java类的简单应用

    俗话说的好,实践出真知,所以除了理论知识掌握扎实以外,更重要的是要多加操练,这样才能掌握核心科技. 今天我们就用刚学会的类来实践一下,目标便是完成上一篇中的剁手任务. 我们的商品类已经准备好了,代码重 ...

  2. Linux及Arm-Linux程序开发笔记(零基础入门篇)

    Linux及Arm-Linux程序开发笔记(零基础入门篇)  作者:一点一滴的Beer http://beer.cnblogs.com/ 本文地址:http://www.cnblogs.com/bee ...

  3. .NET 环境中使用RabbitMQ RabbitMQ与Redis队列对比 RabbitMQ入门与使用篇

    .NET 环境中使用RabbitMQ   在企业应用系统领域,会面对不同系统之间的通信.集成与整合,尤其当面临异构系统时,这种分布式的调用与通信变得越发重要.其次,系统中一般会有很多对实时性要求不高的 ...

  4. 【Linux开发】Linux及Arm-Linux程序开发笔记(零基础入门篇)

    Linux及Arm-Linux程序开发笔记(零基础入门篇) 作者:一点一滴的Beer http://beer.cnblogs.com/ 本文地址:http://www.cnblogs.com/beer ...

  5. 从零基础入门JavaScript(1)

    从零基础入门JavaScript(1) 1.1  Javascript的简史 1995年的时候   由网景公司开发的,当时的名字叫livescript    为了推广自己的livescript,搭了j ...

  6. 跟我学系列教程——《13天让你学会Redis》火热报名中

    学习目标 每天2小时,13天让你学会Redis. 本课程针对Redis新手,甚至连Redis是什么都没有听说过的同学.课程会具体介绍Redis是什么以及为什么要使用Redis,结合项目实践旨在让学生从 ...

  7. Cloudera Manager、CDH零基础入门、线路指导 http://www.aboutyun.com/thread-9219-1-1.html (出处: about云开发)

    Cloudera Manager.CDH零基础入门.线路指导http://www.aboutyun.com/thread-9219-1-1.html(出处: about云开发) 问题导读:1.什么是c ...

  8. 零基础入门学习UI设计指南

    第一步:认识设计启蒙必备知识 学习一项技能,尤其是已经有一定沉淀并在各行各业有广泛应用的技能,就一定要对它先有充分的认知.在开始正式学习前,你需要花足够的经历去了解和查阅它的起源.发展.应用.未来. ...

  9. 【JAVA零基础入门系列】Day6 Java字符串

    字符串,是我们最常用的类型,每个用双引号来表示的串都是一个字符串.Java中的字符串是一个预定义的类,跟C++ 一样叫String,而不是Char数组.至于什么叫做类,暂时不做过多介绍,在之后的篇章中 ...

随机推荐

  1. [转帖]关于USB3.0以及type-C

    忘记来源页面了.. 但是昨天晚上 usb 4.0 发布了 跟雷电C 安全一样的标准 双向40gb 的带宽. 而且 以后只有usb type-C的接口了. 我们办公机器上面的 typeC 同事用 ngf ...

  2. random、range和len函数的使用

    random.range和len函数的使用 一.random函数 1.random.random()和random.Random(): import random num = random.rando ...

  3. APM之原理篇

    APM,应用性能监控,有new relic等产品,对APM感兴趣的应该不会不知道它了.主要功能就是统计分析应用的CPU.内存.网络.数据库.UI等性能,并提供错误日志捕获.编码人员需要做的仅仅是使用它 ...

  4. idea npm vue java开发工具安装 环境配置

    感谢此链接内容作者,从前往后流程较完整详细,助我成功配置好(不知道在这之前做的一些尝试有没有影响) https://blog.csdn.net/qq_42564846/article/details/ ...

  5. Scala 孤立对象和单例对象方法体的用法和例子

    [学习笔记] 1  以object关键字修饰一个类名,这种语法叫做孤立对象,这个对象是单例的. 相当于将单例类和单例对象同时定义.相当于java中的单例,即在内存中只会存在一个Test3实例.创建一个 ...

  6. 【计算机网络】-传输层-Internet传输协议-UDP

    [计算机网络]-传输层-UDP 简介 Internet协议集支持一个无连接的传输协议,该协议称为用户数据报协议(UDP,UserDatagram Protocol) .UDP为应用程序提供了一-种无需 ...

  7. session和cookie区别,多台WEB服务器如何共享session,禁用COOKIE后SESSION是否可用,为什么?

    答:session的运行机制: 用户A访问站点Y,如果站点Y指定了session_start();(以下假设session_start()总是存在)那么会产生一个session_id,这个sessio ...

  8. Ubuntu使用Shadow socks-qt5

    由于大多数朋友都问我在Ubuntu上面怎么kexueshangwang,为了防止以后忘记,故此记录. 本教程使用的配置 Ubuntu 16.10Shadowsocks-qt5一个可用的ss账号一根能够 ...

  9. NAT 模式下有两个虚拟机 网段不一样,一台可上网,可ping通,一台上不了网且ping不通

    NAT 模式下有两个虚拟机 网段不一样,一台可上网,可ping通,一台上不了网且ping不通直接修改网段的话,会登录不上去,解决方法:设置>网络适配器>高级>生成mac地址重新登陆即 ...

  10. SQL将多行数据合并成一行【转】

    转:https://blog.csdn.net/AntherFantacy/article/details/83824182 今天同事问了一个需求,就是将多行数据合并成一行进行显示,查询了一些资料,照 ...