Redis入门篇(安装与启动)
一、Redis介绍
Redis是NoSql的一种,在弄清楚Redis是个什么玩意之前,先了解下NoSql是什么。
1、什么是NoSql
NoSql,全名:Not Only Sql,是一种非关系型数据库,它不能替代关系弄数据库,只是关系型数据库的一个补充,是可以解决高并发、高可用、高扩展、大数据存储等一系列问题而产生的数据库解决方案。
NoSql有以下4种分类:键值(Key-Value)存储数据库、列存储数据库、文档型数据库、图形(Graph)数据库。而Redis属于第一种:键值(Key-Value)存储数据库。
2、什么是Redis
Redis是使用c语言开发的一个高性能键值数据库,即通过一些键值类型来存储数据。Redis支持的键值类型有:String字符类型、map散列类型、list列表类型、set集合类型、sortedset有序集合类型。
redis的应用场景如下:缓存(数据查询、短连接、新闻内容、商品内容等等)、分布式集群架构中的session分离、聊天室的在线好友列表、任务队列。(秒杀、抢购、12306等等)、应用排行榜、网站访问统计、数据过期处理(可以精确到毫秒)。其中,作为缓存的应用场景是最多的。
二、redis安装
一般redis安装于linux服务器,故本例介绍的是Linux下的安装,如果你的电脑是window或mac,请自行百度安装方法。
本例使用的Linux系统是CentOS6.7,诸如Ubuntu等Linux操作系统的操作命令或许存在个别差异,请自行学习了解。
1、下载
可以到redis的官网找到各个Redis版本的下载地址,如:http://download.redis.io/releases/redis-3.0.0.tar.gz
2、安装
使用Xshell等服务器终端连接软件连接上Linux后,进行以下操作:
1)下载压缩Redis
下载redis:
wget http://download.redis.io/releases/redis-3.0.0.tar.gz
使用ll命令查看当前目录下所有文件
可以看到redis-3.0.0.tar.gz就是刚刚下载的redis压缩包,现在对其解压:
tar -zxvf redis-3.0.0.tar.gz
再使用ll命令查看当前目录下所有文件
2)编译安装Redis
进入redis源码:
cd redis-3.0.0
通过ll命令可以看到Redis源码目录下的所有文件,接下来就需要对源码进行编译了:
make
使用make命令编译Redis需要c语言环境,CentOS自带c语言环境,若是使用其他Linux系统中没有c语言环境,则需要安装,如yum安装: yum install gcc-c++
编译过后,就是安装了,安装Redis的命令如下:
make install PREFIX=/usr/local/redis
该命令中,前面的”make install PREFIX=”是固定的,而”/usr/local/redis”是Redis的安装目录,一般就这么写,如若需要安装在其他地方,只需将此路径更换即可。
最后,查看Redis是否安装成功:
cd /usr/local/redis/
使用ll命令,可以看到bin文件夹,说明Redis已经安装成功。
三、Redis启动与停止
Redis有两种启动,分别是:前端启动、后端启动。要启动Redis,就需要到Redis的bin目录下执行启动命令,先看看bin目录结构:
1、前端启动与停止
1)前端启动的命令:
[root@localhost bin]# ./redis-server
可以看到Redis的启动端口为6379(默认),进程id是5979,同时,前端启动Redis后,终端将进入Redis控制台,没办法继续别的Linux命令,即这个终端窗口就”废了”,只能输入Redis自己的命令。
2)前端启动的关闭命令:
强制关闭:Ctrl+c
正常关闭:[root@localhost bin]# ./redis-cli shutdown
下面对这两个命令进行对比:
强制关闭只需在Redis控制台直接执行即可(redis可能会丢失部分数据)。
正常关闭需要另开一个终端窗口才可执行(redis不会丢失数据,推荐使用)。
需要注意一点,一旦前端启动的关闭命令执行,则redis控制台关闭,redis服务也会停掉。
2、后端启动与停止
后端启动是我们开发中绝对会用到的方式,但在使用后端启动命令之后,需要做如下几步配置:
1)后端启动的配置:
第一步,需要把redis源码目录下的redis.conf文件复制到redis安装目录的bin目录下。
第二步,修改redis.conf文件,将daemonize的值改为yes后保存。
[root@localhost bin]# vim redis.conf
Linux的vim编辑器指令请自行学习,这里就说vim中几个最常用的指令:
i:进入编辑模式。
esc:退出编辑模式,进入浏览模式(进入vim编辑器,默认就是浏览模式)。
:wq:保存修改并退出vim编辑器。
经过上面几步配置后,以后就无需再配置,下面就可以通过命令让redis后台启动了。
2)后端启动的命令:
[root@localhost bin]# ./redis-server redis.conf
可以发现后端启动命令就只是比前端启动命令多了” redis.conf”,意思很明确,就是让redis根据这个配置文件的配置运行罢了,同时也可以看到,在启动完redis后台,终端不会进入redis控制台,这就是将redis运行后台了,我们可以查查看系统现在是不是有redis的进程:
[root@localhost bin]# ps -aux | grep redis
可以看到redis是运行着的,端口是6379,进程id是6087。
3)后端启动的关闭命令:
强制关闭:[root@localhost bin]# kill -9 进程id
正常关闭:[root@localhost bin]# ./redis-cli shutdown
因为后端启动redis,没办法像前端启动redis那样直接ctrl+c强制关闭redis,如果需要强制关闭,那只能通过杀死进程的方式停止redis。而正常关闭redis的命令与前端关闭一样,这里就不多说废话。
项目中,建议使用正常关闭。因为redis作为缓存来使用的话,将数据存储到内存中,如果使用正常关闭,则会将内存数据持久化到本地之后,再关闭。如果强制关闭,则不会进行持久化操作,可能会造成部分数据丢失。
四、Redis客户端
1、redis自带客户端
在前面介绍redis安装目录下bin目录的结构时,就已经标记出了redis的客户端,它就是redis-cli。这个客户端有两个常用的功能:
用来正常关闭redis服务。
让终端进入redis控制台(后台运行redis的场景下用到)。
1)启动
启动客户端命令:
[root@localhost bin]# ./redis-cli -h 127.0.0.1 -p 6379
-h:指定访问的redis服务器的ip地址
-p:指定访问的redis服务器的port端口
如果使用的ip地址与端口都是默认的,则上述命令可以这么写:
[root@localhost bin]# ./redis-cli
使用默认配置:默认的ip【127.0.0.1】,默认的port【6379】
2)关闭
ctrl+c
127.0.0.1:6379> quit
要关闭该客户端,使用上述两个命令中任意一个均可,都不会影响redis数据的保存。
2、图形界面客户端
有一个redis的图形界面客户端软件,名为redis-destop-manager。这是该软件的下载页面,支持Windows、Mac OS X、Linux,请根据自己的电脑系统选择下载,这里以windows为例,简单说下这软件的使用,安装很简单,一路下一步即可,安装后打开该应用。
1)打开redis服务器连接配置
2)添加redis服务器连接并测试是否成功连接
3)查看redis服务器中所有的数据库
4)查看个别数据库中的键值对数据
3、代码控制客户端
redis不仅可以使用命令来操作,目前基本上主流的语言都有客户端支持,比如:java、C、C#、C++、php、Node.js、Go等。
在官方网站里有一些Java的客户端,如:Jedis、Redisson、Jredis、JDBC-Redis等,其中官方推荐使用Jedis和Redisson。 在企业中用的最多的就是Jedis。
Jedis托管在github上,点击打开。
1)简单的redis使用
第一步:导入以下2个jar包
jedis-2.7.0.jar
commons-pool2-2.3.jar
第二步:创建Jedis连接使用Redis服务器
@Test
public void jedisClient() {
// 创建Jedis
Jedis jedis = new Jedis("192.168.128.128", 6379);
// 通过Jedis赋值
jedis.set("s2", "222");
// 通过Jedis取值
String s2 = jedis.get("s2");
System.out.println(s2);
// 关闭Jedis
jedis.close();
}
第三步:改用Jedis连接池获取Jedis
@Test
public void jedisPool() {
// JedisPool
JedisPool jedisPool = new JedisPool("192.168.128.128", 6379);
// 通过连接池获取jedis对象
Jedis jedis = jedisPool.getResource();
String s2 = jedis.get("s2");
System.out.println(s2);
// 关闭jedis客户端
jedis.close();
// 关闭连接池
jedisPool.close();
}
2)Spring整合jedisPool
第一步:
添加spring的jar包
配置spring配置文件applicationContext.xml
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:mvc="http://www.springframework.org/schema/mvc"
xmlns:context="http://www.springframework.org/schema/context"
xmlns:aop="http://www.springframework.org/schema/aop" xmlns:tx="http://www.springframework.org/schema/tx"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-3.2.xsd
http://www.springframework.org/schema/mvc
http://www.springframework.org/schema/mvc/spring-mvc-3.2.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context-3.2.xsd
http://www.springframework.org/schema/aop
http://www.springframework.org/schema/aop/spring-aop-3.2.xsd
http://www.springframework.org/schema/tx
http://www.springframework.org/schema/tx/spring-tx-3.2.xsd ">
<!-- 连接池配置 -->
<bean id="jedisPoolConfig" class="redis.clients.jedis.JedisPoolConfig">
<!-- 最大连接数 -->
<property name="maxTotal" value="30" />
<!-- 最大空闲连接数 -->
<property name="maxIdle" value="10" />
<!-- 每次释放连接的最大数目 -->
<property name="numTestsPerEvictionRun" value="1024" />
<!-- 释放连接的扫描间隔(毫秒) -->
<property name="timeBetweenEvictionRunsMillis" value="30000" />
<!-- 连接最小空闲时间 -->
<property name="minEvictableIdleTimeMillis" value="1800000" />
<!-- 连接空闲多久后释放, 当空闲时间>该值 且 空闲连接>最大空闲连接数 时直接释放 -->
<property name="softMinEvictableIdleTimeMillis" value="10000" />
<!-- 获取连接时的最大等待毫秒数,小于零:阻塞不确定的时间,默认-1 -->
<property name="maxWaitMillis" value="1500" />
<!-- 在获取连接的时候检查有效性, 默认false -->
<property name="testOnBorrow" value="false" />
<!-- 在空闲时检查有效性, 默认false -->
<property name="testWhileIdle" value="true" />
<!-- 连接耗尽时是否阻塞, false报异常,ture阻塞直到超时, 默认true -->
<property name="blockWhenExhausted" value="false" />
</bean>
<!-- redis单机 通过连接池 -->
<bean id="jedisPool" class="redis.clients.jedis.JedisPool"
destroy-method="close">
<constructor-arg name="poolConfig" ref="jedisPoolConfig" />
<constructor-arg name="host" value="192.168.128.128" />
<constructor-arg name="port" value="6379" />
</bean>
</beans>
第二步:测试代码
@Test
public void testJedisPool() {
JedisPool pool = (JedisPool) applicationContext.getBean("jedisPool");
Jedis jedis = null;
try {
jedis = pool.getResource();
jedis.set("name", "lisi");
String name = jedis.get("name");
System.out.println(name);
} catch (Exception ex) {
ex.printStackTrace();
} finally {
if (jedis != null) {
// 关闭连接
jedis.close();
}
}
}
五、其他
1、redis数据库数量配置
redis默认创建16个数据库,如果需要修改数量库的创建数量,可以修改redis.conf配置文件中databases的值为改变。
2、redis数据库选择
redis默认使用下标为0的数据库,如若需要切换数据库,可以在redis控制台中,使用”select 下标号”选择数据库。
127.0.0.1:6379> select 15
3、问题
如果你用Xshell之类的终端软件无法连接服务器,请查看Linux系统是否开放22端口,可通过修改iptable拦截规则开放22端口,若是使用阿里云服务器,则需要修改安全组规则,具体步骤网上一堆,请自己搜索学习修改
Redis入门篇(安装与启动)的更多相关文章
- Redis入门篇
一.Redis简介: Redis(http://redis.io)是一款开源的.高性能的键-值存储(key-value store),它是用ANSI C来编写.Redis的项目名是Remote Dic ...
- linux环境下redis数据库的安装|配置|启动
安装 下载:打开redis官方网站,推荐下载稳定版本(stable) 解压 tar zxvf redis-3.2.5.tar.gz 复制:推荐放到usr/local目录下 sudo mv -r red ...
- Linux+Redis实战教程_day02_2、redis简述及安装与启动
2. redis简述及安装 关系型数据库(SQL): Mysql,oracle 特点:数据和数据之间,表和字段之间,表和表之间是存在关系的 例如:部门表 001部门, 员工表 001 用户表,用户 ...
- Redis第一篇(Redis单机版本安装及启动)
安装: 1 2 3 4 5 [root@M2_Redis1 ~]# yum install gcc gcc-c++ (安装依赖) [root@M2_Redis1 tools]# wget ht ...
- Redis入门--1.安装Redis
redis是什么? 是完全开源免费的,用c语言编写的,是一个单线程,高性能的(key/value)内存数据库,基于内存运行并支持持久化的nosql数据库 redis能干嘛? 主要是用来做缓存,但不仅仅 ...
- nginx入门篇----安装、部署、升级
1.安装前准备工作下载nginx安装包依赖包:gcc pcre pcre-level zlib zlib-devel openssl openss-level在线依赖包安装命令:yum -y ins ...
- redis入门指南-安装redis
纸上得来终觉浅 绝知此事要躬行 Redis官方不支持window.微软发布了可在redis的分支.不建议使用 但我确实用了. win7 redis2.8.4 php5.6 apache2.4 ht ...
- nginx入门(安装,启动,关闭,信号量控制)
公司使用到了nginx,于是周末初步接触了一下nginx,立即被其简洁,优雅,高效的特性给迷住了.nginx是在是个好东西,配置极其简单,容易理解,极其高效,稍微一调优,ab测试10k并发,很轻松.比 ...
- WebDriverAgent入门篇-安装和使用
前言 在群里看到WebDriverAgent这个东西,出于好奇,便开始百度+谷歌,最终对其有了简单的了解.也对自动化测试也有了一个初步的了解.接下来你看到的是对WebDriverAgent的一些介绍. ...
随机推荐
- angular select2 ng-model 取值 ng-change调用方法
页面: 引入文件 '/select2.css', '/select2-bootstrap.css', '/select2.min.js', '/ui-select2.js' html: <div ...
- 网页导航栏 html + css的代码实现
一般来讲,我们的网页导航栏是这么个模式来构建在结构上:1.首先我们需要给导航栏的div 给个类名 一般为nav2.然后就是一个无序表格 3.由于导航栏的文字一般都是链接用来跳转页面 要在li里面包含一 ...
- 2018-11-06 Visual Studio Code插件-英汉词典初版发布
VS插件市场地址: 英汉词典 - Visual Studio Marketplace 开源在: program-in-chinese/vscode_english_chinese_dictionary ...
- springmvc 获取请求头信息
@PostMapping("/test/post") public void post(@RequestBody String params, @RequestHeader(req ...
- jQuery 实现文字不停闪烁效果
使用jQuery实现的小效果:文字不停地闪烁. var flag = true; var text= $('#blink').text(); // blink是需要闪烁的元素id function b ...
- [katalon] 页面切换
UI自动化测试过程中会涉及到需要切换多个页面, 如点击一个按钮之后跳转到新的页面, 后者A站点提交信息后,B站点审核. Katalon虽然不支持控制多个浏览器,但是支持处理tab切换. 核心方法是使用 ...
- 使用Fraps获取3D程序的FPS
Fraps为免费软件(wiki),通过Hook OpenGL(SwapBuffer)或D3D(Present)来获取目标进程的FPS信息(32位进程注入fraps32.dll,64位注入fraps64 ...
- Scala之Calendar,SimpleDateFormat简单用法
package com.dingxin.entrance import java.text.SimpleDateFormat import java.util.{Calendar, Date} /** ...
- C#-命名空间(十五)
概念 命名空间的设计目的是提供一种让一组名称与其他名称分隔开的方式 在一个命名空间中声明的类的名称与另一个命名空间中声明的相同的类的名称不冲突 命名空间的定义是有一定的规范,避免引起不必要的麻烦 命名 ...
- web前端(10)—— 浮动,清除默认样式
文档流 web页面和ps等设计软件有本质的区别,web 网页的制作,是个“流”,从上而下 ,像 “织毛衣”,就跟编程语言一样,都是由上而下 而设计软件 ,想往哪里画东西,就去哪里画 文档流带来的最明显 ...