提到Redis,大家肯定都听过,并且应该都在项目中或多或少的使用过,也许你觉得Redis用起来挺简单的呀,但如果有人问你下面的几个问题(比如同事或者面试官),你能回答的上来吗?

  1. 什么是Redis?
  2. Redis能存储哪几种数据结构?
  3. Redis有几种持久化机制?它们的优缺点分别是什么?
  4. 哪些场景需要使用Redis?
  5. 什么是缓存雪崩,如何避免?
  6. 什么是缓存穿透,如何避免?
  7. 什么是缓存击穿,如何避免?

如果你都能回答的上来,恭喜你,说明你对Redis有一定的了解,如果回答不上来,也没关系,本系列博客会对Redis进行一系列的讲解,欢迎关注!

所谓工欲善其事,必先利其器,既然要学习Redis,首先我们至少得知道什么是Redis以及如何安装Redis环境,这也是本篇博客的主要内容。

1. Redis简介

什么是Redis呢?

Redis是一个开源(BSD许可)的内存数据结构存储,用作数据库、缓存和消息代理。它支持诸如字符串、散列、列表、集合、有序集合等数据结构。-- Redis官网

Redis是一个开源的使用ANSI C语言编写、支持网络、可基于内存亦可持久化的高性能的key-value数据库。-- 百度百科

Redis是一款依据BSD开源协议发行的高性能key-value存储系统,通常被称为数据结构服务器。-- 其它网友

Redis是一个远程内存数据库,它不仅性能强劲,而且还具有复制特性以及为解决问题而生的独一无二的数据模型。Redis提供了5种不同类型的数据结构,各式各样的问题都可以很自然地映射到这些数据结构上。 -- 《Redis实战》

Redis是一个速度非常快的非关系型数据库,它可以存储键(key)与5种不同类型值(value)之间的映射(mapping),可以将存储在内存的键值对数据持久化到硬盘,可以使用复制特性来扩展读性能,还可以使用客户端分片来扩展写性能。-- 《Redis实战》

2. Redis环境安装(Windows)

说明:Redis官方并没有提供Windows版本的Redis,也不建议在生产环境使用Windows版本的Redis,我目前所在的公司生产环境Redis是部署在Linux服务器的。

虽然Redis官方不支持Windows版本,但是微软Microsoft Open Tech Group提供了1个Windows版本的Redis,下载地址:https://github.com/microsoftarchive/redis/releases

将下载好的文件解压到你喜欢的目录,我这里是E:\Tools\Redis-x64-3.0.504,如下所示:

双击上图中红色标记的redis-server.exe即可启动Redis服务:

也可以打开一个cmd窗口,切换到Redis所在目录,然后执行如下命令启动:

redis-server.exe redis.windows.conf

通过这2种方式打开,需要保证cmd窗口一直保持打开状态,关闭后客户端就无法连接,如果服务器重启了,需要再次打开Redis服务端,为了解决该问题,我们可以把Redis安装成Windows服务:

cd E:\Tools\Redis-x64-3.0.504

redis-server --service-install redis.windows.conf

你可以直接在界面上启动/停止该服务,也可以执行cmd命令来启动/停止/卸载该服务:

启动服务:

redis-server --service-start

停止服务:

redis-server --service-stop

卸载服务:

redis-server --service-uninstall

3. Redis环境安装(Linux)

首先,我们需要将Linux环境下Redis的安装包放到服务器上去,这里有2种方法,第1种方法是,打开Redis官网的下载地址:https://redis.io/download,下载稳定版本到本机:

然后通过工具,比如Xftp,将本地下载的文件上传至Linux服务器的某目录下,比如我这里要上传的目录是/mnt。

第2种方式是通过命令直接下载Redis的安装包到服务器的/mnt目录下,具体命令如下所示:

cd mnt/

wget -q http://download.redis.io/releases/redis-5.0.7.tar.gz

然后,执行如下命令解压文件:

tar -xzf redis-5.0.7.tar.gz

然后,执行如下命令将解压好的文件移动到/usr/local目录下,并进行编译:

mv redis-5.0.7 /usr/local/

cd /usr/local/redis-5.0.7

make

注意事项:执行完make命令后,屏幕会输出好多信息,大概有2~3屏的样子

当看到如下信息时,代表编译完成:

然后,切换到/usr/local/redis-5.0.7/src目录,执行make install命令进行安装:

cd src/

make install

然后,切换到/usr/local/redis-5.0.7目录,新建文件夹bin和etc,并将该目录下的redis.conf文件移动到etc目录,

将/usr/local/redis-5.0.7/src目录下的mkreleasehdr.sh redis-benchmark redis-check-aof redis-cli redis-server

移动到刚刚创建的bin目录:

cd ..

mkdir bin

mkdir etc

mv redis.conf etc/

cd src

mv mkreleasehdr.sh redis-benchmark redis-check-aof redis-cli redis-server /usr/local/redis-5.0.7/bin/

然后,切换到/usr/local/redis-5.0.7/etc目录,修改下Redis的配置文件redis.conf:

cd ..

cd etc/

vi redis.conf

redis.conf主要修改以下4点:

  1. 将daemonize no改为daemonize yes,表示需要在后台运行

  2. 将bind 127.0.0.1这一行注释掉

    这里的bind指的是只有指定的网段才能远程访问这个redis,注释掉后,就没有这个限制了。

  3. 将protect-mode yes改为protect-mode no

    默认是protect-mode yes,不能远程访问,改为no之后,可以远程访问

  4. 添加requirepass 123456设置密码(默认密码为空)

最后,切换到/usr/local/redis-5.0.7/bin目录,执行如下命令启动Redis服务:

cd ..

cd bin/

redis-server /usr/local/redis-5.0.7/etc/redis.conf

启动后,可以执行如下命令查看Redis是否启动以及进程ID:

ps aux | grep redis-server

4. Redis Hello World示例

打开cmd窗口,打开一个redis-cli交互窗口来简单使用下Redis:

redis-cli.exe -h 127.0.0.1 -p 6379

设置一个key-value缓存,其中key为hello,value为hello world!:

set hello "hello world!"

获取key为hello的值:

get hello

5. Redis Desktop Manager使用

虽然我们可以通过命令的方式来查看Redis存储的数据,但毕竟不太友好,这里推荐个比较流行的工具:Redis Desktop Manager。

官网地址:https://redisdesktop.com/

官网现在的版本2019.5需要付费才能使用,否则只有14天的试用期。

在2019年6份打开还是下面这样的,貌似涨价了啊,哈哈。

不过我们仍然可以下载之前不付费的版本,下载地址:https://github.com/uglide/RedisDesktopManager/releases/tag/0.8.8

安装过程比较简单,这里不再赘述,安装完成后,连接本机Windows环境下的Redis服务器:

连接成功后,可以看到之前设置的值:

也可以连接远程Linux环境下的Redis服务器:

有些同学可能使用的工具是Another.Redis.Dsektop.Manager,这里只贴下下载地址:http://electronjs.org/apps/anotherredisdesktopmanager,有兴趣的同学可以自行下载。

6. 源码及参考

Redis的安装和部署(windows )

Windows下使用Redis(一)安装使用

Linux下安装Redis

Redis系列(一):Redis简介及环境安装的更多相关文章

  1. Redis系列(一):Redis的简介与安装

    原文链接(转载请注明出处):Redis系列(一):Redis的简介与安装 什么是 Redis Redis 是一个使用ANSI C 编写的开源.支持网络协议.基于内存.可选持久性的键值对数据库,它是一个 ...

  2. Redis系列一 Redis安装

    Redis系列一    Redis安装 1.安装所使用的操作系统为Ubuntu16.04 Redis版本为3.2.9 软件一般下载存放目录为/opt,以下命令操作目录均为/opt root@ubunt ...

  3. Redis系列(二):Redis的数据类型及命令操作

    原文链接(转载请注明出处):Redis系列(二):Redis的数据类型及命令操作 Redis 中常用命令 Redis 官方的文档是英文版的,当然网上也有大量的中文翻译版,例如:Redis 命令参考.这 ...

  4. Memcached简介及环境安装

    Memcached简介及环境安装 author:SimpleWu 简介 Memcached是一个自由开源的,高性能,分布式内存对象缓存系统. Memcached是以LiveJournal旗下Danga ...

  5. scala语言简介及其环境安装

    scala语言简介及其环境安装 简介: 1.运行在JVM 上,兼容java语言 Scala的代码,都需要经过编译为字节码,然后交由Java虚拟机来运行.所以Scala和Java是可以无缝互操作的.Sc ...

  6. Bootstrap:教程、简介、环境安装

    ylbtech-Bootstrap:教程.简介.环境安装 1. Bootstrap 教程返回顶部 1. Bootstrap 教程 Bootstrap,来自 Twitter,是目前最受欢迎的前端框架.B ...

  7. python学习笔记1之-python简介及其环境安装

    python学习笔记之-python简介及其环境安装 最近几年python之火不用多说,最近开始利用时间自学python,在学习的过程中,按照自己的思路和理解记录下学习的过程,并分享出来,如果正好你也 ...

  8. Redis实战(一)Redis简介及环境安装(Windows)

    提到Redis,大家肯定都听过,并且应该都在项目中或多或少的使用过,也许你觉得Redis用起来挺简单的呀,但如果有人问你下面的几个问题(比如同事或者面试官),你能回答的上来吗? 什么是Redis? R ...

  9. redis系列之1----redis简介以及linux上的安装

    redis简介 redis是NoSQL(No Only SQL,非关系型数据库)的一种,NoSQL是以Key-Value的形式存储数据.当前主流的分布式缓存技术有redis,memcached,ssd ...

随机推荐

  1. JavaScript的一些SAO操作

    IE判断检测 jQuery 在 1.9 版本之前,提供了一个浏览器对象检测的属性 使用率极高.但是在版本发布之后,大家钟爱的这个属性被无情的抛弃了.大家开始着手寻找.browser 的替代方案.于是各 ...

  2. Activiti学习之spring boot 与activiti整合

    声明:本文是springboot2.0的多项目构建,springboot2.0和spingboot1.5的配置是有出入的,构建项目之前请规范您的springboot版本,选择2.0以上. 一.在IDE ...

  3. js(一) 三大事件 实现注册验证

    ps:小声比比,为什么一周多没更,因为js真的好难啊. 上一周做了一整周的jsp+sevlet+mysql做了一个MVC模式的最基本的新闻系统源码会有空搞出来的 好累 好多的. 三大事件 (鼠标事件. ...

  4. 关于 vue 生命周期 钩子函数 事件

    vue实例有一个完整的生命周期,也就是从开始创建.初始化数据.编译模板.挂载Dom.渲染->更新->渲染.卸载等一系列过程,我们称这是vue的生命周期. 通俗的将就是vue实例从创建到销毁 ...

  5. 【js】vue 2.5.1 源码学习 (九) 响应数组对象的变

    大体思路(八) 本节内容: 1.Observe 如何响应数组的变化 代理原型 数组变异方法 shell cacheArrProto methods 新添加的数组需要加到显示系统里面,拦截 push等的 ...

  6. HDU 5912 Fraction(模拟)

    Problem Description Mr. Frog recently studied how to add two fractions up, and he came up with an ev ...

  7. P1043 查找小于x的最大元素

    题目描述 现在告诉你一个长度为 \(n\) 的有序数组 \(a_1, a_2, ..., a_n\) ,以及 \(q\) 次询问,每次询问会给你一个数 \(x\) ,对于每次询问,你需要输出数组 \( ...

  8. linux 后备缓存

    一个设备驱动常常以反复分配许多相同大小的对象而结束. 如果内核已经维护了一套相同 大小对象的内存池, 为什么不增加一些特殊的内存池给这些高容量的对象? 实际上, 内核 确实实现了一个设施来创建这类内存 ...

  9. linux tasklet工作队列

    工作队列是, 表面上看, 类似于 taskets; 它们允许内核代码来请求在将来某个时间调用 一个函数. 但是, 有几个显著的不同在这 2 个之间, 包括: tasklet 在软件中断上下文中运行的结 ...

  10. Common Logging包装设计

    类设计 LogFactory根据当前环境加载具体的Log实现: 1.从缓存中加载LogFactory 2.从系统属性org.apache.commons.logging.LogFactory 中加载L ...