redis单机版安装+测试+项目运用

【简介】

    Redis是一个开源的使用ANSI C语言编写、支持网络、可基于内存亦可持久化的日志型、Key-Value数据库,并提供多种语言的API。
    应用场景:前台有一部分内容经常被大量多次的访问的情况下就有必要使用redis了
    优点:减少了对数据的访问,使得对用户的相应请求更加迅速

【安装步骤】

    第一步:安装gcc编译环境
      命令:yum install gcc-c++
    第二步:将redis的源码上传到linux服务器中
      可以直接在百度中搜索redis-3.0.0.tar.gz
    第三步:解压缩
      tar -zxvf redis-3.0.0.tar.gz
    第四步:进入解压后的redis文件夹中,输入命令:make
    第五步:安装输入命令: make install PREFIX=/usr/local/redis/
      注:/usr/local/redis/为安装的redis的位置,最后的/不可省略

【启动redis】

    前端启动:进入redis安装目录,输入命令:./redis-server
      这样的形式不利于操作,一般采用后台启动
    后台启动:
      1.将安装步骤中的第三步,解压缩的文件夹中的redis.conf复制到redis的安装目录
      2.修改redis.conf内容中的daemonize no   为daemonize yes
      3.输入命令启动:./redis-server redis.conf
      注:后台启动之后可以输入ps aux|grep redis  查看进程是否启动,这样配置默认的ip为localhost(127.0.0.1)  默认的端口号为 6379 ;如下图所示为启动成功

【测试redis】

    dos命令测试
      1.进入redis安装目录
      2.输入命令:./redis-cli -p 6379 -h 192.168.37.10 -c(最后的-c是一定要有的)
      通过set设置值,get获取值进行测试,如下图所示
    项目中测试(通过jedis进行测试)
      1.引入jedis依赖的jar包: jedis-2.7.2.jar
      2.编写测试方法,如下代码
-
package com.taotao.jedis;

import org.junit.Test;

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

public class JedisTest {

	//单机版
	@Test
	public void testJedisSingle() throws Exception{
		//创建一个jedis对象
		Jedis jedis = new Jedis("192.168.37.10",6379);
		jedis.set("test", "hello jedis");
		String string = jedis.get("test");
		System.out.println(string);
		jedis.close();
	}
	
	//使用连接池
	@Test
	public void testJedisPool() throws Exception{
		//创建一个链接池对象
		//系统中应该是单例的
		JedisPool jedisPool = new JedisPool("192.168.37.10",6379);
		//从连接池中获得一个连接
		Jedis jedis = jedisPool.getResource();
		String result = jedis.get("test");
		System.out.println(result);
		//jedis必须关闭
		jedis.close();
		
		
		
		//系统关闭时关闭连接池
		jedisPool.close();
	}

}
-

【项目运用】

    思路:创建一个jedis操作的接口,创建一个实体类来实现redis的接口


    jedis的接口类

-
package com.taotao.rest.component;

public interface JedisClient {

	public String set(String key,String value);
	public String get(String key);
	public Long hset(String key,String item,String value);
	public String hget(String key,String item);
	public Long incr(String key);
	public Long decr(String key);
	public Long expire(String key,int second);
	public Long ttl(String key);
	public Long hdel(String key,String item);
}
-
    

    jedis的实现类

-
package com.taotao.rest.component.impl;

import org.springframework.beans.factory.annotation.Autowired;

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

import com.taotao.rest.component.JedisClient;

/**
 * redis客户端单机版实现类
 * @author	mk
 * @date	2017年2月8日下午9:34:39
 * @version 1.0
 */
public class JedisClientSingle implements JedisClient {

	@Autowired
	private JedisPool jedisPool;
	
	@Override
	public String set(String key, String value) {
		Jedis jedis = jedisPool.getResource();
		String result = jedis.set(key, value);
		jedis.close();
		return result;
	}

	@Override
	public String get(String key) {
		Jedis jedis = jedisPool.getResource();
		String result = jedis.get(key);
		jedis.close();
		return result;
	}

	@Override
	public Long hset(String key, String item, String value) {
		Jedis jedis = jedisPool.getResource();
		Long result = jedis.hset(key,item, value);
		jedis.close();
		return result;
	}

	@Override
	public String hget(String key, String item) {
		Jedis jedis = jedisPool.getResource();
		String result = jedis.hget(key, item);
		jedis.close();
		return result;
	}

	@Override
	public Long incr(String key) {
		Jedis jedis = jedisPool.getResource();
		Long result = jedis.incr(key);
		jedis.close();
		return result;
	}

	@Override
	public Long decr(String key) {
		Jedis jedis = jedisPool.getResource();
		Long result = jedis.decr(key);
		jedis.close();
		return result;
	}

	@Override
	public Long expire(String key, int second) {
		Jedis jedis = jedisPool.getResource();
		Long result = jedis.expire(key,second);
		jedis.close();
		return result;
	}

	@Override
	public Long ttl(String key) {
		Jedis jedis = jedisPool.getResource();
		Long result = jedis.ttl(key);
		jedis.close();
		return result;
	}

	@Override
	public Long hdel(String key, String item) {
		Jedis jedis = jedisPool.getResource();
		Long result = jedis.hdel(key,item);
		jedis.close();
		return result;
	}

}
-

    

    spring配置

-
	<!-- 配置redis客户端单机版 -->
	 <bean id="jedisPool" class="redis.clients.jedis.JedisPool" >
		<constructor-arg name="host" value="192.168.37.10"></constructor-arg>
		<constructor-arg name="port" value="6379"></constructor-arg>
	</bean>
	<!-- 配置redis客户端实现类 -->
	<bean id="jedisClientSingle" class="com.taotao.rest.component.impl.JedisClientSingle"/>
-
    

    service中的运用(REDIS_CONTENT_KEY为固定的一个规范,在配置文件中自己设定就可以了)

-
	@Override
	public List<TbContent> getContentList(Long cid) {
		//添加缓存
		//查询数据库之前先查询缓存,如果有直接返回
		try {
			//从redis中取缓存数据
			String json = jedisClient.hget(REDIS_CONTENT_KEY, cid+"");
			if (!StringUtils.isBlank(json)) {
				//把json转换成list
				List<TbContent> list = JsonUtils.jsonToList(json, TbContent.class);
				return list;
			}
		} catch (Exception e) {
			e.printStackTrace();
		}
		
		//根据cid查询内容列表
		TbContentExample example = new TbContentExample();
		Criteria criteria = example.createCriteria();
		criteria.andCategoryIdEqualTo(cid);
		//执行查询
		List<TbContent> list = contentMapper.selectByExample(example);
		
		//返回结果之前,向缓存中添加数据
		try {
			//为了规范key可以使用hash
			//定义一个保存内容的key,hash中每个项就是cid
			//value是list,需要把list转换成jeson数据
			
			jedisClient.hset(REDIS_CONTENT_KEY, cid+"", JsonUtils.objectToJson(list));
		} catch (Exception e) {
			e.printStackTrace();
		}
		
		return list;
	}
-

【总结】

    通过对redis环境的配置测试以及项目中的运用,让我深刻的感受到了缓存的力量,以及通过这几技术点开拓的自己的思想,以及考虑问题的角度。

    针对于每一个技术点都应该有它独特的适应场景,而不是随意去用,如果是为了学习测试某一个技术点那么在任何地方进行都是可以的,如果是项目中来运用的话还是要深刻的思考宏观的把控,来衡量一下这个技术点的运用场景从而来裁决是否用它。

    有时候小编也会思考,如何才能够让自己学习一个东西来达到举一反三的效果,实践证明小编的理论就是:首先有一套可执行的理论;其次就是自己要不断去尝试,一定要亲自动手去做;最后如果在做的过程中遇到各种各样的问题之后要是再加上:“我又遇到问题了,我又能够成长了,我又能够从更多的角度用更多的思路来理解这个知识点了”,这样的心态的话,那么学习走想成功也就不太远啦O(∩_∩)O~

    总结沉潜,继续前行啦O(∩_∩)O~

  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 27
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 27
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

创业之路&下一个五年

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值