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

本文涉及的产品
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~

相关文章
|
2月前
|
人工智能 测试技术 项目管理
测试不再碎片化:AI智能体平台「项目资料套件」功能上线!
在实际项目中,需求文档分散、整理费时、测试遗漏等问题常困扰测试工作。霍格沃兹推出AI智能体测试平台全新功能——项目资料套件,可将多个关联文档打包管理,并一键生成测试用例,提升测试完整性与效率。支持套件创建、文档关联、编辑删除及用例生成,适用于复杂项目、版本迭代等场景,助力实现智能化测试协作,让测试更高效、更专业。
|
4月前
|
关系型数据库 应用服务中间件 nginx
Docker一键安装中间件(RocketMq、Nginx、MySql、Minio、Jenkins、Redis)
本系列脚本提供RocketMQ、Nginx、MySQL、MinIO、Jenkins和Redis的Docker一键安装与配置方案,适用于快速部署微服务基础环境。
|
1月前
|
NoSQL 算法 Redis
【Docker】(3)学习Docker中 镜像与容器数据卷、映射关系!手把手带你安装 MySql主从同步 和 Redis三主三从集群!并且进行主从切换与扩容操作,还有分析 哈希分区 等知识点!
Union文件系统(UnionFS)是一种**分层、轻量级并且高性能的文件系统**,它支持对文件系统的修改作为一次提交来一层层的叠加,同时可以将不同目录挂载到同一个虚拟文件系统下(unite several directories into a single virtual filesystem) Union 文件系统是 Docker 镜像的基础。 镜像可以通过分层来进行继承,基于基础镜像(没有父镜像),可以制作各种具体的应用镜像。
347 5
|
7月前
|
NoSQL 数据可视化 关系型数据库
安装 Redis
本文主要介绍了Linux系统下Redis的安装步骤,包括卸载旧版本、下载新版本、编译安装以及配置启动等详细操作,并解释了Redis默认端口6379的由来。同时,文章还简要说明了Windows环境下Redis的下载与服务安装方法。最后,推荐了几款Redis可视化管理工具,如RedisView、QuickRedis、AnotherRedisDesktopManager和RedisPlus,提供了它们的功能特点及下载链接,方便用户根据需求选择合适的工具进行数据库管理。
563 1
|
2月前
|
测试技术 UED 开发者
性能测试报告-用于项目的性能验证、性能调优、发现性能缺陷等应用场景
性能测试报告用于评估系统性能、稳定性和安全性,涵盖测试环境、方法、指标分析及缺陷优化建议,是保障软件质量与用户体验的关键文档。
|
4月前
|
存储 缓存 NoSQL
Redis 核心知识与项目实践解析
本文围绕 Redis 展开,涵盖其在项目中的应用(热点数据缓存、存储业务数据、实现分布式锁)、基础数据类型(string 等 5 种)、持久化策略(RDB、AOF 及混合持久化)、过期策略(惰性 + 定期删除)、淘汰策略(8 种分类)。 还介绍了集群方案(主从复制、哨兵、Cluster 分片)及主从同步机制,分片集群数据存储的哈希槽算法。对比了 Redis 与 Memcached 的区别,说明了内存用完的情况及与 MySQL 数据一致性的保证方案。 此外,详解了缓存穿透、击穿、雪崩的概念及解决办法,如何保证 Redis 中是热点数据,Redis 分布式锁的实现及问题解决,以及项目中分布式锁
134 1
|
4月前
|
Java 测试技术 Spring
简单学Spring Boot | 博客项目的测试
本内容介绍了基于Spring Boot的博客项目测试实践,重点在于通过测试驱动开发(TDD)优化服务层代码,提升代码质量和功能可靠性。案例详细展示了如何为PostService类编写测试用例、运行测试并根据反馈优化功能代码,包括两次优化过程。通过TDD流程,确保每项功能经过严格验证,增强代码可维护性与系统稳定性。
238 0
|
4月前
|
人工智能 数据可视化 测试技术
UAT测试排程工具深度解析:让验收测试不再失控,项目稳稳上线
在系统交付节奏加快的背景下,“测试节奏混乱”已成为项目延期的主因之一。UAT测试排程工具应运而生,帮助团队结构化拆解任务、清晰分配责任、实时掌控进度,打通需求、测试、开发三方协作闭环,提升测试效率与质量。本文还盘点了2025年热门UAT工具,助力团队选型落地,告别靠表格和群聊推进测试的低效方式,实现有节奏、有章法的测试管理。
|
6月前
|
消息中间件 NoSQL Linux
Redis的基本介绍和安装方式(包括Linux和Windows版本),以及常用命令的演示
Redis(Remote Dictionary Server)是一个高性能的开源键值存储数据库。它支持字符串、列表、散列、集合等多种数据类型,具有持久化、发布/订阅等高级功能。由于其出色的性能和广泛的使用场景,Redis在应用程序中常作为高速缓存、消息队列等用途。
920 16
|
6月前
|
JSON NoSQL Redis
在Rocky9系统上安装并使用redis-dump和redis-load命令的指南
以上步骤是在Rocky9上使用redis-dump和redis-load命令顺利出行的秘籍。如果在实行的过程中,发现了新的冒险和挑战,那么就像一个勇敢的航海家,本着探索未知的决心,解决问题并前进。
244 14

热门文章

最新文章