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
相关文章
|
2月前
|
NoSQL 安全 测试技术
Redis游戏积分排行榜项目中通义灵码的应用实战
Redis游戏积分排行榜项目中通义灵码的应用实战
71 4
|
14天前
|
NoSQL 关系型数据库 Redis
《docker高级篇(大厂进阶):1.Docker复杂安装详说》包括:安装mysql主从复制、安装redis集群
《docker高级篇(大厂进阶):1.Docker复杂安装详说》包括:安装mysql主从复制、安装redis集群
62 14
|
11天前
|
关系型数据库 MySQL 应用服务中间件
《docker基础篇:8.Docker常规安装简介》包括:docker常规安装总体步骤、安装tomcat、安装mysql、安装redis
《docker基础篇:8.Docker常规安装简介》包括:docker常规安装总体步骤、安装tomcat、安装mysql、安装redis
51 7
|
27天前
|
NoSQL 算法 Redis
docker高级篇(大厂进阶):安装redis集群
docker高级篇(大厂进阶):安装redis集群
98 24
|
1月前
|
NoSQL Java 关系型数据库
Liunx部署java项目Tomcat、Redis、Mysql教程
本文详细介绍了如何在 Linux 服务器上安装和配置 Tomcat、MySQL 和 Redis,并部署 Java 项目。通过这些步骤,您可以搭建一个高效稳定的 Java 应用运行环境。希望本文能为您在实际操作中提供有价值的参考。
138 26
|
20天前
|
NoSQL 关系型数据库 MySQL
Linux安装jdk、mysql、redis
Linux安装jdk、mysql、redis
151 7
|
2月前
|
机器学习/深度学习 算法 UED
在数据驱动时代,A/B 测试成为评估机器学习项目不同方案效果的重要方法
在数据驱动时代,A/B 测试成为评估机器学习项目不同方案效果的重要方法。本文介绍 A/B 测试的基本概念、步骤及其在模型评估、算法改进、特征选择和用户体验优化中的应用,同时提供 Python 实现示例,强调其在确保项目性能和用户体验方面的关键作用。
45 6
|
2月前
|
机器学习/深度学习 算法 UED
在数据驱动时代,A/B 测试成为评估机器学习项目效果的重要手段
在数据驱动时代,A/B 测试成为评估机器学习项目效果的重要手段。本文介绍了 A/B 测试的基本概念、步骤及其在模型评估、算法改进、特征选择和用户体验优化中的应用,强调了样本量、随机性和时间因素的重要性,并展示了 Python 在 A/B 测试中的具体应用实例。
36 1
|
2月前
|
监控 安全 测试技术
如何在实际项目中应用Python Web开发的安全测试知识?
如何在实际项目中应用Python Web开发的安全测试知识?
39 4
|
2月前
|
NoSQL Linux PHP
如何在不同操作系统上安装 Redis 服务器,包括 Linux 和 Windows 的具体步骤
本文介绍了如何在不同操作系统上安装 Redis 服务器,包括 Linux 和 Windows 的具体步骤。接着,对比了两种常用的 PHP Redis 客户端扩展:PhpRedis 和 Predis,详细说明了它们的安装方法及优缺点。最后,提供了使用 PhpRedis 和 Predis 在 PHP 中连接 Redis 服务器及进行字符串、列表、集合和哈希等数据类型的基本操作示例。
86 4