(四)基于SSM+Redis+Nginx+FastDFS的博客网站

 Redis是用C语言开发的一个开源的高性能键值对(key-value)数据库。它通过提供多种键值数据类型来适应不同场景下的存储需求,目前为止Redis支持的键值数据类型如字符串类型、散列类型、列表类型、集合类型、有序集合类型。


菜鸟教程里有基本的使用命令:点击打开链接


楼主是使用的阿里云服务器,一开始时也是通过直接在阿里云服务器里面安装redis,阿里有新用户+9.9的套餐,开通后有赠送redis数据库,所以就改用赠送的数据库了,无需自己配置。


 下面就讲解下直接在centos服务器上配置redis。redis是6379端口,记得别忘记了设定防火墙规则,如果是自己

本机测试的话,可直接通过service iptables stop来关闭防火墙。

redis是C语言开发,建议在linux上运行,本教程使用Centos6.4作为安装环境。
	安装redis需要先将官网下载的源码进行编译,编译依赖gcc环境,如果没有gcc环境,需要安装gcc:yum install gcc-c++
版本说明
	本教程使用redis3.0版本。3.0版本主要增加了redis集群功能。
	
源码下载
	从官网下载 
	http://download.redis.io/releases/redis-3.0.0.tar.gz
	将redis-3.0.0.tar.gz拷贝到/usr/local下
	
	
解压源码
   tar -zxvf redis-3.0.0.tar.gz  
进入解压后的目录进行编译
	cd /usr/local/redis-3.0.0
	make
安装到指定目录,如 /usr/local/redis
	cd /usr/local/redis-3.0.0 
	make PREFIX=/usr/local/redis install

redis.conf
redis.conf是redis的配置文件,redis.conf在redis源码目录。
注意修改port作为redis进程的端口,port默认6379。


拷贝配置文件到安装目录下	
	进入源码目录,里面有一份配置文件 redis.conf,然后将其拷贝到安装路径下 
	cd /usr/local/redis
	mkdir conf
	cp /usr/local/redis-3.0.0/redis.conf  /usr/local/redis/bin
直接运行bin/redis-server将以前端模式启动,前端模式启动的缺点是ssh命令窗口关闭则redis-server程序结束,不推荐使用此方法。推荐使用后端模式启动。修改redis.conf配置文件, daemonize yes 以后端模式启动。
执行如下命令启动redis:

cd /usr/local/redis

./bin/redis-server ./redis.conf
启动成功后,在界面启动redis客户端。
cd /usr/local/redis/bin
./redis-cli

后续的可参见菜鸟教程里的命令使用redis

接下来先测试下在JAVA中通过jedis客户端访问redis。

package com.tdrip.test;

import org.junit.Test;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;

import redis.clients.jedis.Jedis;
import redis.clients.jedis.JedisPool;
import redis.clients.jedis.JedisPoolConfig;

public class JedisClientTest {
	
	@Test
	public void testSpringJedisSingle() {
		ApplicationContext applicationContext = new ClassPathXmlApplicationContext("classpath:spring/applicationContext-*.xml");
		JedisPool pool = (JedisPool) applicationContext.getBean("jedisPool");
		Jedis jedis = pool.getResource();
		jedis.set("key1", "sosmmh");
		String string = jedis.get("key1");
		System.out.println(string);
		jedis.close();
		pool.close();
	}
	
	@Test
	public void testJedisSingle() {

		Jedis jedis = new Jedis("192.168.1.101", 6379);
		jedis.set("name", "bar");
		String name = jedis.get("name");
		System.out.println(name);
		jedis.close();
	}
	
	@Test
	public void pool() {
		JedisPoolConfig config = new JedisPoolConfig();
		//最大连接数
		config.setMaxTotal(30);
		//最大连接空闲数
		config.setMaxIdle(2);
		
		JedisPool pool = new JedisPool(config, "192.168.1.101", 6379);
		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();
			}
		}
		
	}
}
接下来是整合spring:两个文件,一个是redis的连接信息文件,一个是整合spring的xml文件

  • redis.properties
    redis.host=192.168.1.101
    redis.port=6379
    redis.timeout=2000
    redis.password=foobared
  • applicationContext-jedis.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"
    	xsi:schemaLocation="http://www.springframework.org/schema/beans
    		http://www.springframework.org/schema/beans/spring-beans-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="true" />
    		<!-- 在空闲时检查有效性, 默认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="${redis.host}"/>
    		<constructor-arg name="port" value="${redis.port}"/>
    		<constructor-arg name="timeout" value="${redis.timeout}"/><!-- redis有配置密码的话设置此项 -->
    		<constructor-arg name="password" value="${redis.password}" />
    	</bean>
    	<bean id="jedisClient" class="com.tdrip.dao.impl.JedisClientSingle"/>
    </beans>
 PS:这篇简单介绍了下redis的安装,与spring的整合和测试。下一篇介绍本项目如何使用redis进行添加缓存。

猜你喜欢

转载自blog.csdn.net/sosmmh/article/details/79259084