[TOC] # Redis简介安装部署 ## 01/ nosql介绍 > NoSQL:一类新出现的数据库(not only sql),它的特点: 1、 不支持SQL语法 2、 存储结构跟传统关系型数据库中的那种关系表完全不同,nosql中存储的数据都是KV形式 3、 NoSQL的世界中没有一种通用的语言,每种nosql数据库都有自己的api和语法,以及擅长的业务场景 4、 NoSQL中的产品种类相当多: a) Mongodb 文档型nosql数据库,擅长做CMS系统(内容管理系统) b) Redis 内存数据库,数据结构服务器,号称瑞士军刀(精巧),只要你有足够的想象力,它可以还给你无限惊喜 c) Hbase hadoop生态系统中原生的一种nosql数据库,重量级的分布式nosql数据库,用于海量数据的场景 d) Cassandra hadoop生态系统中原生的一种分布式nosql数据库,后起之秀 > NoSQL和SQL数据库的比较: 1. 适用场景不同:sql数据库适合用于关系特别复杂的数据查询场景,nosql反之 2. "事务"特性的支持:sql对事务的支持非常完善,而nosql基本不支持事务 3. 两者在不断地取长补短,呈现融合趋势 ## 02/ redis介绍 ### 2.1 简述 > Redis是一个高性能的kv对缓存和内存数据库(存的不像mysql那样的表) > Redis的存储结构就是key-value,形式如下: ![](https://box.kancloud.cn/a09d1b3722d28858274664d38e171bbf_357x217.png) > 注: redis中的value内部可以支持各种数据结构类型,比如可以存入一个普通的string,还可以存list,set,hashmap,sortedSet(有序的set) ### 2.2 redis应用场景 * 用来做缓存(ehcache/memcached)——redis的所有数据是放在内存中的(内存数据库) * 可以在某些特定应用场景下替代传统数据库——比如社交类的应用 * 在一些大型系统中,巧妙地实现一些特定的功能:session共享、购物车 > 只要你有丰富的想象力,redis可以用在可以给你无限的惊喜……. ### 2.3 redis的特性 1. redis数据访问速度快(数据在内存中) 2. redis有数据持久化机制(持久化机制有两种:1、定期将内存数据dump到磁盘;2、aof(append only file)持久化机制——用记日志的方式记录每一条数据更新操作,一旦出现灾难事件,可以通过日志重放来恢复整个数据库) 3. redis支持集群模式(容量可以线性扩展) 4. redis相比其他缓存工具(ehcach/memcached),有一个鲜明的优势:支持丰富的数据结构 ## 03/ 安装redis ### 3.1 获取源码包 1. 先去官网(http://redis.io/download )下载一个源码工程(redis官网版本只支持linux/微软开源事业部维护了一个windows版本) 2. 把安装包上传到服务器,解压缩 ### 3.2 编译源码 > 1、切换到解压出来的源码工程目录中 ~~~ cd redis-2.6.16 ~~~ > 2、用make命令来对redis的c语言源码工程进行编译 > 3、编译完成之后,用make install命令进行安装 ~~~ [root@notrue-centos redis-2.6.16]# make PREFIX=/usr/local/redis install ~~~ 安装成功的显示: ![](https://box.kancloud.cn/a82225b7465b301290766bcdab156a35_461x171.png) ### 3.3 启动redis服务 > 1、进入redis的bin目录 ![](https://box.kancloud.cn/c1014de080f5a80b71d082a26a6defc1_456x92.png) > 2、准备配置文件 > Redis服务在启动的时候可以指定配置文件,那,我们可以从redis的源码目录中拷贝一份配置文件模板到redis的安装目录,修改后使用 ~~~ [root@notrue-centos redis-2.6.16]# cp /root/redis-2.6.16/redis.conf /usr/local/redis/ ~~~ > 3、启动redis服务 > 并指定使用的配置文件 ![](https://box.kancloud.cn/5e1937acb11fd32df76e06769b503e7b_410x89.png) > 4、启动成功的显示 ![](https://box.kancloud.cn/b5f6291770b0bba314c0cfee79aa8f30_320x145.png) > 5、启动为后台服务 > 上述启动方法,会让redis服务进程运行在console前台,最好应该放到后台运行,可将启动命令改为如下方式: > 1/ 方式一 ~~~ [root@notrue-centos redis]# nohup bin/redis-server ./redis.conf 1>/dev/null 2>&1 & ~~~ > Nohup:控制台关闭或闲置超时,也不退出 > 1>/dev/null : 把程序的“1”——标准输出,重定向到文件/dev/null > 2>&1 : 把程序的“2”——错误输出,重定向到“1”所去的文件 > & : 把程序放到后台运行 > 2/ 方式二 > 修改配置文件, ~~~ vi redis.conf ~~~ > 修改其中一个配置 ![](https://box.kancloud.cn/18f8fc707a63573d2737a0e837981246_232x85.png) > 保存文件后再用普通命令启动,也可以启动为后台模式 ~~~ [root@notrue-centos redis]# bin/redis-server ./redis.conf ~~~ ## 04/ 客户端连接 ### 1、 用redis自带的命令行客户端 ~~~ [root@notrue-centos redis]# bin/redis-cli -h notrue-centos -p 6379 redis notrue-centos:6379> ping PONG redis notrue-centos:6379> ~~~ ### 2、 或者用redis的api客户端连接 > 新建一个maven工程,导入jedis的maven依赖坐标 ~~~ <dependency> <groupId>redis.clients</groupId> <artifactId>jedis</artifactId> <version>2.7.2</version> <type>jar</type> <scope>compile</scope> </dependency> ~~~ > 然后写一个类用来测试服务器跟客户端的连通性: ~~~ public class RedisClientConnectionTest { public static void main(String[] args) { // 构造一个redis的客户端对象 Jedis jedis = new Jedis("pinshutang.zicp.net", 6379); String ping = jedis.ping(); System.out.println(ping); } } ~~~