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

本文涉及的产品
云原生内存数据库 Tair,内存型 2GB
云数据库 Redis 版,社区版 2GB
推荐场景:
搭建游戏排行榜
云数据库 Redis 版,经济版 1GB 1个月
简介: 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
相关文章
|
5天前
|
Java Maven
maven跳过测试清理、打包、安装
maven跳过测试清理、打包、安装
16 4
|
2天前
|
存储 NoSQL 关系型数据库
Redis系列学习文章分享---第一篇(Redis快速入门之初始Redis--NoSql+安装redis+客户端+常用命令)
Redis系列学习文章分享---第一篇(Redis快速入门之初始Redis--NoSql+安装redis+客户端+常用命令)
9 1
|
5天前
|
Linux 测试技术 开发工具
CentOS Linux 8使用阿里源(安装jdk11、git测试)
CentOS Linux 8使用阿里源(安装jdk11、git测试)
17 1
|
6天前
|
NoSQL Redis 数据安全/隐私保护
连接测试服务器redis
连接测试服务器redis
16 1
|
8天前
|
存储 缓存 NoSQL
Redis性能测试实操记录与分析
Redis性能测试实操记录与分析
12 3
|
5天前
|
NoSQL 关系型数据库 MySQL
一文学会dockers安装 (附docker安装MySQL、Redis)
一文学会dockers安装 (附docker安装MySQL、Redis)
30 0
|
6天前
|
NoSQL Linux 网络安全
centos安装Redis
centos安装Redis
14 0
|
6天前
|
缓存 Java Spring
SpringBoot配置第三方专业缓存技术Memcached 下载 安装 整合测试 2024年5000字详解
SpringBoot配置第三方专业缓存技术Memcached 下载 安装 整合测试 2024年5000字详解
10 0
|
9天前
|
存储 NoSQL Linux
Linux下Redis简介、安装、设置、启动
Linux下Redis简介、安装、设置、启动
14 0
|
9天前
|
分布式计算 Shell Linux
Spark-集群安装、部署、启动、测试(1.6.3)稳定版
Spark-集群安装、部署、启动、测试(1.6.3)稳定版
15 0