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

本文涉及的产品
云数据库 Tair(兼容Redis),内存型 2GB
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
相关文章
|
10天前
|
NoSQL Java API
springboot项目Redis统计在线用户
通过本文的介绍,您可以在Spring Boot项目中使用Redis实现在线用户统计。通过合理配置Redis和实现用户登录、注销及统计逻辑,您可以高效地管理在线用户。希望本文的详细解释和代码示例能帮助您在实际项目中成功应用这一技术。
21 3
|
14天前
|
网络协议 关系型数据库 应用服务中间件
【项目场景】请求数据时测试环境比生产环境多花了1秒是怎么回事?
这是一位粉丝(谢同学)给V哥的留言,描述了他在优化系统查询时遇到的问题:测试环境优化达标,但生产环境响应时间多出1秒。通过抓包分析,发现MySQL请求和响应之间存在500毫秒的延迟,怀疑是网络传输开销。V哥给出了以下优化建议:
|
1月前
|
自然语言处理 机器人 Python
ChatGPT使用学习:ChatPaper安装到测试详细教程(一文包会)
ChatPaper是一个基于文本生成技术的智能研究论文工具,能够根据用户输入进行智能回复和互动。它支持快速下载、阅读论文,并通过分析论文的关键信息帮助用户判断是否需要深入了解。用户可以通过命令行或网页界面操作,进行论文搜索、下载、总结等。
50 1
ChatGPT使用学习:ChatPaper安装到测试详细教程(一文包会)
|
1月前
|
测试技术
自动化测试项目学习笔记(五):Pytest结合allure生成测试报告以及重构项目
本文介绍了如何使用Pytest和Allure生成自动化测试报告。通过安装allure-pytest和配置环境,可以生成包含用例描述、步骤、等级等详细信息的美观报告。文章还提供了代码示例和运行指南,以及重构项目时的注意事项。
181 1
自动化测试项目学习笔记(五):Pytest结合allure生成测试报告以及重构项目
|
20天前
|
存储 SQL 关系型数据库
2024Mysql And Redis基础与进阶操作系列(1)作者——LJS[含MySQL的下载、安装、配置详解步骤及报错对应解决方法]
Mysql And Redis基础与进阶操作系列(1)之[MySQL的下载、安装、配置详解步骤及报错对应解决方法]
|
25天前
|
NoSQL 测试技术 Redis
Redis 性能测试
10月更文挑战第21天
26 2
|
1月前
|
NoSQL Ubuntu Linux
Redis 安装
10月更文挑战第14天
53 1
|
11天前
|
NoSQL 编译器 Linux
【赵渝强老师】Redis的安装与访问
本文基于Redis 6.2版本,详细介绍了在CentOS 7 64位虚拟机环境中部署Redis的步骤。内容包括安装GCC编译器、创建安装目录、解压安装包、编译安装、配置文件修改、启动服务及验证等操作。视频讲解和相关图片帮助理解每一步骤。
|
1月前
|
NoSQL Linux Redis
Docker学习二(Centos):Docker安装并运行redis(成功运行)
这篇文章介绍了在CentOS系统上使用Docker安装并运行Redis数据库的详细步骤,包括拉取Redis镜像、创建挂载目录、下载配置文件、修改配置以及使用Docker命令运行Redis容器,并检查运行状态和使用Navicat连接Redis。
238 3
|
1月前
|
测试技术 Python
自动化测试项目学习笔记(四):Pytest介绍和使用
本文是关于自动化测试框架Pytest的介绍和使用。Pytest是一个功能丰富的Python测试工具,支持参数化、多种测试类型,并拥有众多第三方插件。文章讲解了Pytest的编写规则、命令行参数、执行测试、参数化处理以及如何使用fixture实现测试用例间的调用。此外,还提供了pytest.ini配置文件示例。
27 2