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

本文涉及的产品
Redis 开源版,标准版 2GB
推荐场景:
搭建游戏排行榜
云数据库 Tair(兼容Redis),内存型 2GB
简介: Redis是一个开源的使用ANSI C语言编写、支持网络、可基于内存亦可持久化的日志型、Key-Value数据库,并提供多种语言的API。

【简介】


   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 ;如下图所示为启动成功


20170209145420189.jpg


【测试redis】


   dos命令测试

     1.进入redis安装目录

     2.输入命令:./redis-cli -p 6379 -h 192.168.37.10 -c(最后的-c是一定要有的)

     通过set设置值,get获取值进行测试,如下图所示


20170209145442127.jpg


   项目中测试(通过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~

相关实践学习
基于Redis实现在线游戏积分排行榜
本场景将介绍如何基于Redis数据库实现在线游戏中的游戏玩家积分排行榜功能。
云数据库 Redis 版使用教程
云数据库Redis版是兼容Redis协议标准的、提供持久化的内存数据库服务,基于高可靠双机热备架构及可无缝扩展的集群架构,满足高读写性能场景及容量需弹性变配的业务需求。 产品详情:https://www.aliyun.com/product/kvstore &nbsp; &nbsp; ------------------------------------------------------------------------- 阿里云数据库体验:数据库上云实战 开发者云会免费提供一台带自建MySQL的源数据库&nbsp;ECS 实例和一台目标数据库&nbsp;RDS实例。跟着指引,您可以一步步实现将ECS自建数据库迁移到目标数据库RDS。 点击下方链接,领取免费ECS&amp;RDS资源,30分钟完成数据库上云实战!https://developer.aliyun.com/adc/scenario/51eefbd1894e42f6bb9acacadd3f9121?spm=a2c6h.13788135.J_3257954370.9.4ba85f24utseFl
相关文章
|
17天前
|
测试技术
自动化测试项目学习笔记(五):Pytest结合allure生成测试报告以及重构项目
本文介绍了如何使用Pytest和Allure生成自动化测试报告。通过安装allure-pytest和配置环境,可以生成包含用例描述、步骤、等级等详细信息的美观报告。文章还提供了代码示例和运行指南,以及重构项目时的注意事项。
73 1
自动化测试项目学习笔记(五):Pytest结合allure生成测试报告以及重构项目
|
19天前
|
NoSQL 数据可视化 Linux
redis学习四、可视化操作工具链接 centos redis,付费Redis Desktop Manager和免费Another Redis DeskTop Manager下载、安装
本文介绍了Redis的两个可视化管理工具:付费的Redis Desktop Manager和免费的Another Redis DeskTop Manager,包括它们的下载、安装和使用方法,以及在使用Another Redis DeskTop Manager连接Redis时可能遇到的问题和解决方案。
65 1
redis学习四、可视化操作工具链接 centos redis,付费Redis Desktop Manager和免费Another Redis DeskTop Manager下载、安装
|
4天前
|
NoSQL 测试技术 Redis
Redis 性能测试
10月更文挑战第21天
12 2
|
11天前
|
NoSQL Ubuntu Linux
Redis 安装
10月更文挑战第14天
40 1
|
16天前
|
NoSQL Linux Redis
Docker学习二(Centos):Docker安装并运行redis(成功运行)
这篇文章介绍了在CentOS系统上使用Docker安装并运行Redis数据库的详细步骤,包括拉取Redis镜像、创建挂载目录、下载配置文件、修改配置以及使用Docker命令运行Redis容器,并检查运行状态和使用Navicat连接Redis。
130 3
|
17天前
|
测试技术 Python
自动化测试项目学习笔记(四):Pytest介绍和使用
本文是关于自动化测试框架Pytest的介绍和使用。Pytest是一个功能丰富的Python测试工具,支持参数化、多种测试类型,并拥有众多第三方插件。文章讲解了Pytest的编写规则、命令行参数、执行测试、参数化处理以及如何使用fixture实现测试用例间的调用。此外,还提供了pytest.ini配置文件示例。
17 2
|
17天前
|
测试技术 Python
自动化测试项目学习笔记(二):学习各种setup、tearDown、断言方法
本文主要介绍了自动化测试中setup、teardown、断言方法的使用,以及unittest框架中setUp、tearDown、setUpClass和tearDownClass的区别和应用。
37 0
自动化测试项目学习笔记(二):学习各种setup、tearDown、断言方法
|
22天前
|
存储 NoSQL 大数据
大数据-51 Redis 高可用方案CAP-AP 主从复制 一主一从 全量和增量同步 哨兵模式 docker-compose测试
大数据-51 Redis 高可用方案CAP-AP 主从复制 一主一从 全量和增量同步 哨兵模式 docker-compose测试
29 3
|
22天前
|
存储 Prometheus NoSQL
大数据-44 Redis 慢查询日志 监视器 慢查询测试学习
大数据-44 Redis 慢查询日志 监视器 慢查询测试学习
21 3
|
17天前
|
缓存 NoSQL 关系型数据库
单机版Redis
【10月更文挑战第3天】
30 0