Redis简介-安装-Spring-SpringBoot集成教程
一、 什么是NoSQL
NoSql是为了解决高并发、高可扩展、高可用以及高写入而产生的数据库解决方案。
NoSql就是Not Only sql。Nosql是非关系型数据库,它是关系型数据库的良好补充,而不能替代关系型数据库。
二、 Nosql数据库分类
键值(Key-Value)存储数据库
- 相关产品: Tokyo Cabinet/Tyrant、Redis、Voldemort、Berkeley DB
- 典型应用: 内容缓存,主要用于处理大量数据的高访问负载。
- 数据模型: 一系列键值对
- 优势: 快速查询
- 劣势: 存储的数据缺少结构化
列存储数据库
- 相关产品:Cassandra, HBase, Riak
- 典型应用:分布式的文件系统
- 数据模型:以列簇式存储,将同一列数据存在一起
- 优势:查找速度快,可扩展性强,更容易进行分布式扩展
- 劣势:功能相对局限
文档型数据库
- 相关产品:CouchDB、MongoDB
- 典型应用:Web应用(与Key-Value类似,Value是结构化的)
- 数据模型: 一系列键值对
- 优势:数据结构要求不严格
- 劣势: 查询性能不高,而且缺乏统一的查询语法
图形(Graph)数据库
- 相关数据库:Neo4J、InfoGrid、Infinite Graph
- 典型应用:社交网络
- 数据模型:图结构
- 优势:利用图结构相关算法。
- 劣势:需要对整个图做计算才能得出结果,不容易做分布式的集群方案。
三、 什么是redis
Redis是用C语言开发的高性能的键值对存储的非关系数据库。Redis存储的数据类型有以下几种:字符(String)、散列(Hash)、列表(List)、集合(Set)、有序集合(ZSet)
四、历史发展
2008年,意大利的一家创业公司Merzia推出了一款基于MySQL的网站实时统计系统LLOOGG,然而没过多久该公司的创始人 Salvatore Sanfilippo便对MySQL的性能感到失望,于是他决定亲自为LLOOGG量身定做一个数据库,并于2009年开发完成,这个数据库就是Redis。 不过Salvatore Sanfilippo并不满足只将Redis用于LLOOGG这一款产品,而是希望更多的人使用它,于是在同一年Salvatore Sanfilippo将Redis开源发布,并开始和Redis的另一名主要的代码贡献者Pieter Noordhuis一起继续着Redis的开发,直到今天。
SalvatoreSanfilippo自己也没有想到,短短的几年时间,Redis就拥有了庞大的用户群体。HackerNews在2012年发布了一份数据库的使用情况调查,结果显示有近12%的公司在使用Redis。国内如新浪微博、街旁网、知乎网,国外如GitHub、Stack Overflow、Flickr等都是Redis的用户。
VMware公司从2010年开始赞助Redis的开发, Salvatore Sanfilippo和Pieter Noordhuis也分别在3月和5月加入VMware,全职开发Redis。
五、redis的应用场景
- 缓存(数据查询、短连接、新闻内容、商品内容等等)。(最多使用)
- 分布式集群架构中的session分离。
- 聊天室的在线好友列表。
- 任务队列。(秒杀、抢购、12306等等)
- 应用排行榜。
- 网站访问统计。
- 数据过期处理(可以精确到毫秒)
六、redis安装与启动
——-安装
- 进入Linux控制终端,下载Redis安装包
wget http://download.redis.io/releases/redis-3.0.6.tar.gz
- 安装C语言环境(已经安装->跳过)
yum install gcc-c++
- 解压Redis安装包
tar -zxf redis-3.0.6.tar.gz
- 进入解压目录并编译Redis
cd redis-3.0.6
make
- 安装Redis
make install PREFIX=/usr/local/redis
如果出现以下类似信息则说明安装正常
make[1]: Entering directory `/root/redis-3.0.6/src'Hint: It's a good idea to run 'make test' ;) INSTALL installINSTALL installINSTALL installINSTALL installINSTALL install
make[1]: Leaving directory `/root/redis-3.0.6/src
——启动
进入到安装目录的bin目录
cd /usr/local/redis/bin
- 前台启动
比较少用,一旦启动redis的客户端关闭,则redis也关闭。
./redis-server
后台启动
- 将redis.conf拷贝到bin目录下(redis.conf位于redis解压目录下)
cp -r /root/redis-3.0.6/redis.conf /usr/local/redis/bin/
- 修改redis.conf配置
vim redis.conf
将daemonize 改为yes (第42行)
- 启动redis
./redis-server redis.conf
七、客户端连接
redis本机自带客户端连接
./redis-cli -h 127.0.0.1 -p 6379
-h:指定主机IP
-p:指定主机端口
./redis-cli
默认主机IP是127.0.0.1 默认端口 6379
使用图形软件连接
- 下载软件
下载GitHub网址
https://github.com/uglide/RedisDesktopManager/releases/
mac下载地址
https://github.com/uglide/RedisDesktopManager/releases/download/0.9.0-alpha4/redis-desktop-manager-0.9.0.51.dmg
ps:在我的mac上不能用,可能因为用了最新的系统,找了另外一个软件:https://github.com/caoxinyu/RedisClient/tree/OSX,下载下来用以下命令启动。
nohup java -XstartOnFirstThread -jar redisclient-OSX.jar >/dev/null 2>&1 &
可以将这段保存为脚本start.sh执行,(先更改权限chmod 777 start.sh
),然后命令行的当前目录执行./satrt.sh
windows下载网址
https://github.com/uglide/RedisDesktopManager/releases/download/0.9.0-alpha4/redis-desktop-manager-0.9.0.559.exe
安装就不用多说了,双击即可
现在没有设置密码,直接add server,填写ip和端口即可。
八、Spring集成
jar文件
##maven
<dependency><groupId>redis.clients</groupId><artifactId>jedis</artifactId><version>2.9.0</version>
</dependency>##gradle
compile group: 'redis.clients', name: 'jedis', version: '2.9.0'
配置文件
<!-- 连接池配置 --><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="127.0.0.1" /><constructor-arg name="port" value="6379" /></bean>
测试代码
@Testpublic 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();}}}
九、设置redis密码
编辑/usr/local/redis/bin/redis.conf的396行。(小提示:命令行模式下396gg
就跳转到396行了),将注释打开,更改为自己的密码。命令行模式下,输入:wq
保存退出。
requirepass 123456
重启
首先查询到redis的pid后,kill掉,然后重启
[root@localhost bin]# ps -ef|grep redis
root 20940 1 0 12:12 ? 00:00:18 ./redis-server *:6379
[root@localhost bin]# kill 20940
[root@localhost bin]# ./redis-server redis.conf
十、SpringBoot集成
springboot中只需要加入依赖,就会帮我们自动配置好redisTemplate,stringredisTemplate,使用十分方便。除了string,list,set,zset,hash,还支持存入对象。(对象必需实现Serializable)
- 加入起步Starter
gradle
//redis
compile('org.springframework.boot:spring-boot-starter-data-redis')
maven的方式百度下就有,看到这里的人应该有能力查到了。
- 对redis进行一些配置(没配置密码)
application.properties
#--------------------------redis----------------------------
# 使用的数据库,共16个0-15
spring.redis.database=0
#连接地址
spring.redis.host=172.16.160.129
#密码
spring.redis.password=123456
#连接端口
spring.redis.port=6379
#最大连接数
spring.redis.pool.max-active=8
#是否为安全连接(https,ssl)
spring.redis.ssl=false
#超时
spring.redis.timeout=1000
- 使用示例
UserTest对象
import lombok.Data;
import java.io.Serializable;@Data//使用了lombok
public class UserTest implements Serializable {private String name;private String address;private Integer age;}
import com.kingboy.CommonApplication;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.data.redis.core.StringRedisTemplate;
import org.springframework.test.context.junit4.SpringRunner;
import javax.annotation.Resource;
import java.util.Set;/*** @Author kingboy* @Date 2017/7/19 下午5:09* @Description RedisTest is used to redisTest*/
@RunWith(SpringRunner.class)
@SpringBootTest(classes = CommonApplication.class)
public class RedisTest {@ResourceStringRedisTemplate stringRedisTemplate;@ResourceRedisTemplate redisTemplate;/*** 测试StringRedisTemplate*/@Testpublic void StringRedisTemplateTest() {//StringstringRedisTemplate.opsForValue().set("king","hello world!");String king = stringRedisTemplate.opsForValue().get("king");System.out.println("String获取的值:" + king);//setstringRedisTemplate.opsForSet().add("kingset", "1", "2", "3");Set<String> kingset = stringRedisTemplate.opsForSet().members("kingset");System.out.println("Set获取的值:" + kingset);//zset,hash,list省略}/*** 测试redisTemplate*/@Testpublic void redisTemplateTest() {redisTemplate.opsForList().leftPush("listtest", "param1");Object index = redisTemplate.opsForList().index("listtest", 0);System.out.println("list" + index);//zset,hash,string,set省略}/*** 测试存入对象* 存入的对象需要实现Serializable接口*/@Testpublic void saveObjectTest() {//创建UserTest userTest = new UserTest();userTest.setName("小金2");userTest.setAge(12);userTest.setAddress("BeiJing");//存redisTemplate.opsForHash().put("user", userTest.hashCode(), userTest);//取UserTest user = (UserTest) redisTemplate.opsForHash().get("user", userTest.hashCode());System.out.println(user);}}
十一、项目
自己在github新建了springboot的项目,供个人研究,项目地址:
https://github.com/KingBoyWorld/aurora.git,
项目中演示了actuator的使用(actuator_feature分支),redis的集成(redis_feature分支)等功能,感兴趣可以下载看看,如有错误,欢迎指正。
十二、关于Redis使用
主要是String,Set,ZSet,List,Hash的使用,以及过期时间、本地序列存储等,网止很多教程,以后有空自己再整理一份。
记录完了,有句话不知当讲不当讲………………
Redis简介-安装-Spring-SpringBoot集成教程相关推荐
- Spring JSF集成教程
Spring JSF集成教程 欢迎来到Spring JSF集成教程.JSF是一个基于组件的框架,非常注重用户界面.而Spring框架核心原则是依赖注入.因此,将JSF与Spring框架集成是有意义的, ...
- 七天玩转Redis 第六天打卡 SpringBoot集成Redis
七天玩转Redis 第六天打卡 SpringBoot集成Redis 主要总结点: 一.SpringBoot集成Redis 1.导入jar包(maven依赖的方式) 2.编写yml配置文件 二.自定义R ...
- Windows下安装Mongodb SpringBoot集成MongoDB和Redis多数据源
全文内容: Mongodb安装 说明:Mongodb和redis是开发中常用的中间件,Redis的安装使用比较简单就不写了,只说本地也就是Windows安装Mongodb. SpringBoot集成M ...
- Redis第三话 – Springboot集成Redis以及常用API和客户端介绍
本文主要记录在Springboot中集成Redis的使用. 1. springboot集成redis 1.1 maven配置 基于springboot 版本2.5.6,parent包就不贴了. < ...
- minio的安装和springboot集成minio
文章目录 1.什么是minio 1.1 minio的优点 1.2 MinIO的基础概念 1.3 纠删码EC (Erasure Code) 1.4 存储形式 1.5 存储方案 2 MinIO环境搭建 2 ...
- 下载了linux版redis怎么用,Linux下redis的安装与使用图文教程
本文实例讲述了linux下redis的安装与使用.分享给大家供大家参考,具体如下: redis官网地址: 最新版本:3.2.6 1.下载.解压 wget http://download.redis.i ...
- (十三)java版spring cloud+spring boot+redis社交电子商务平台-springboot集成spring cache...
电子商务社交平台源码请加企鹅求求:一零三八七七四六二六.本文介绍如何在springboot中使用默认的spring cache, 声明式缓存 Spring 定义 CacheManager 和 Cach ...
- windows下Redis的安装和配置--图文教程
安装和配置Redis 前言:windows没有32位的Redis,所以32位机器的朋友考虑换一下机器. 1.windows环境下的redis需要去github上获取: https://github.c ...
- Spring JSF集成
Spring JSF集成 欢迎来到Spring JSF集成教程.JSF是一个基于组件的框架,非常注重用户界面.而Spring框架核心原则是依赖注入.因此,将JSF与Spring框架集成是有意义的,其中 ...
最新文章
- 灭霸—个人冲刺(4)
- 最新版火车头织梦内容发布规则_火车头采集器V8.6发布dedecms自定义字段解决方案...
- Java字符编码根本原理
- python2基础教程廖雪峰云-Python 基础教程
- freecodecamp_为什么您一定要参与freeCodeCamp的一个研究小组
- 4K屏幕+5500万像素摄像头,以成未来手机的一大趋势
- 【重温基础】6.数字
- 分享Silverlight/WPF/Windows Phone一周学习导读(3月28日-4月2日)
- 自动触发click事件
- 原子结构示意图全部_所有原子结构示意图(1-118)最新元素周期表.pdf
- c语言变量ppt,C语言数据类型和变量课件PPT
- 计算机中丢失d3dx9_26.dll,d3dx9_26.dll
- MySQL之mysqldump备份数据库
- Dubbo 常见的负载均衡(Load Balance)算法,一起学习一下吧~
- 基于机器学习的视频防抖处理
- xp计算机找不到音量调节,WinXP电脑没声音且小喇叭不见了如何解决?
- eNSP实验日记四(防火墙配置)
- 《区块链技术与应用》北大肖臻老师——课程笔记【4-5】
- 如何成为一个成熟男人
- python根据IP查询地理位置