一、 什么是NoSQL

NoSql是为了解决高并发、高可扩展、高可用以及高写入而产生的数据库解决方案。

NoSql就是Not Only sql。Nosql是非关系型数据库,它是关系型数据库的良好补充,而不能替代关系型数据库。

二、 Nosql数据库分类

  1. 键值(Key-Value)存储数据库

    • 相关产品: Tokyo Cabinet/Tyrant、Redis、Voldemort、Berkeley DB
    • 典型应用: 内容缓存,主要用于处理大量数据的高访问负载。
    • 数据模型: 一系列键值对
    • 优势: 快速查询
    • 劣势: 存储的数据缺少结构化
  2. 列存储数据库

    • 相关产品:Cassandra, HBase, Riak
    • 典型应用:分布式的文件系统
    • 数据模型:以列簇式存储,将同一列数据存在一起
    • 优势:查找速度快,可扩展性强,更容易进行分布式扩展
    • 劣势:功能相对局限
  3. 文档型数据库

    • 相关产品:CouchDB、MongoDB
    • 典型应用:Web应用(与Key-Value类似,Value是结构化的)
    • 数据模型: 一系列键值对
    • 优势:数据结构要求不严格
    • 劣势: 查询性能不高,而且缺乏统一的查询语法
  4. 图形(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安装与启动

 ——-安装

  1. 进入Linux控制终端,下载Redis安装包
wget http://download.redis.io/releases/redis-3.0.6.tar.gz
  1. 安装C语言环境(已经安装->跳过)
yum install gcc-c++
  1. 解压Redis安装包
tar -zxf redis-3.0.6.tar.gz
  1. 进入解压目录并编译Redis
cd redis-3.0.6
make
  1. 安装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

使用图形软件连接

  1. 下载软件

下载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
  1. 安装就不用多说了,双击即可

  2. 现在没有设置密码,直接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)

  1. 加入起步Starter

gradle

//redis
compile('org.springframework.boot:spring-boot-starter-data-redis')

maven的方式百度下就有,看到这里的人应该有能力查到了。

  1. 对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
  1. 使用示例

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集成教程相关推荐

  1. Spring JSF集成教程

    Spring JSF集成教程 欢迎来到Spring JSF集成教程.JSF是一个基于组件的框架,非常注重用户界面.而Spring框架核心原则是依赖注入.因此,将JSF与Spring框架集成是有意义的, ...

  2. 七天玩转Redis 第六天打卡 SpringBoot集成Redis

    七天玩转Redis 第六天打卡 SpringBoot集成Redis 主要总结点: 一.SpringBoot集成Redis 1.导入jar包(maven依赖的方式) 2.编写yml配置文件 二.自定义R ...

  3. Windows下安装Mongodb SpringBoot集成MongoDB和Redis多数据源

    全文内容: Mongodb安装 说明:Mongodb和redis是开发中常用的中间件,Redis的安装使用比较简单就不写了,只说本地也就是Windows安装Mongodb. SpringBoot集成M ...

  4. Redis第三话 – Springboot集成Redis以及常用API和客户端介绍

    本文主要记录在Springboot中集成Redis的使用. 1. springboot集成redis 1.1 maven配置 基于springboot 版本2.5.6,parent包就不贴了. < ...

  5. minio的安装和springboot集成minio

    文章目录 1.什么是minio 1.1 minio的优点 1.2 MinIO的基础概念 1.3 纠删码EC (Erasure Code) 1.4 存储形式 1.5 存储方案 2 MinIO环境搭建 2 ...

  6. 下载了linux版redis怎么用,Linux下redis的安装与使用图文教程

    本文实例讲述了linux下redis的安装与使用.分享给大家供大家参考,具体如下: redis官网地址: 最新版本:3.2.6 1.下载.解压 wget http://download.redis.i ...

  7. (十三)java版spring cloud+spring boot+redis社交电子商务平台-springboot集成spring cache...

    电子商务社交平台源码请加企鹅求求:一零三八七七四六二六.本文介绍如何在springboot中使用默认的spring cache, 声明式缓存 Spring 定义 CacheManager 和 Cach ...

  8. windows下Redis的安装和配置--图文教程

    安装和配置Redis 前言:windows没有32位的Redis,所以32位机器的朋友考虑换一下机器. 1.windows环境下的redis需要去github上获取: https://github.c ...

  9. Spring JSF集成

    Spring JSF集成 欢迎来到Spring JSF集成教程.JSF是一个基于组件的框架,非常注重用户界面.而Spring框架核心原则是依赖注入.因此,将JSF与Spring框架集成是有意义的,其中 ...

最新文章

  1. 灭霸—个人冲刺(4)
  2. 最新版火车头织梦内容发布规则_火车头采集器V8.6发布dedecms自定义字段解决方案...
  3. Java字符编码根本原理
  4. python2基础教程廖雪峰云-Python 基础教程
  5. freecodecamp_为什么您一定要参与freeCodeCamp的一个研究小组
  6. 4K屏幕+5500万像素摄像头,以成未来手机的一大趋势
  7. 【重温基础】6.数字
  8. 分享Silverlight/WPF/Windows Phone一周学习导读(3月28日-4月2日)
  9. 自动触发click事件
  10. 原子结构示意图全部_所有原子结构示意图(1-118)最新元素周期表.pdf
  11. c语言变量ppt,C语言数据类型和变量课件PPT
  12. 计算机中丢失d3dx9_26.dll,d3dx9_26.dll
  13. MySQL之mysqldump备份数据库
  14. Dubbo 常见的负载均衡(Load Balance)算法,一起学习一下吧~
  15. 基于机器学习的视频防抖处理
  16. xp计算机找不到音量调节,WinXP电脑没声音且小喇叭不见了如何解决?
  17. eNSP实验日记四(防火墙配置)
  18. 《区块链技术与应用》北大肖臻老师——课程笔记【4-5】
  19. 如何成为一个成熟男人
  20. python根据IP查询地理位置

热门文章

  1. C/C++开发,如何将自己做好的服务进行容器化部署
  2. word-1-无法缩小行距的解决办法
  3. 2022年全球与中国复印纸市场现状分析
  4. NLP中的数据增强方法综述
  5. 无尽对决怎么修改服务器地区,无尽对决怎么换账号具体操作方法解说
  6. 为什么运营商的光纤端口满了就不能安装了?
  7. FFmpeg卸载旧版本,安装新版本详细步骤(更新FFmpeg)
  8. 【ACM】漫漫长路——刷题(8)
  9. macOS13 Ventura更新了,你的电脑要不要更新呢?
  10. 解决:修改安卓system系统文件导致手机一直重启