Spring、MyBatis框架和Redis数据库介绍 第3关:Redis数据库简介

28 篇文章 9 订阅
5 篇文章 1 订阅

目录

任务描述

相关知识

Redis 是什么

Redis 的优势

Redis 的用途

Java 中连接Redis

Redis 字符串实例

编程要求

测试说明

参考代码 


任务描述

本关任务:了解Java中使用Redis的基本方法。

相关知识

Redis 是什么

Redis是一个完全开源免费、高性能的key-value数据库。所谓key-value数据库是一种以键值对存储数据的数据库。类比于Java中的Map,可以将整个数据库理解为一个大型的Map,每个键都会对应一个唯一的值。 Redis与其他key-value产品相比有以下三个特点:

  • Redis支持数据的持久化,可以将内存中的数据保存在磁盘中,重启的时候可以再次加载进行使用;
  • Redis不仅仅支持简单的key-value类型的数据,同时还提供listsetzsethash等数据结构的存储;
  • Redis支持数据的备份,即master-slave(主从)模式的数据备份。

Redis 的优势

  • 性能极高,官方数据表示Redis能读的速度是110000次每秒,写的速度是81000次/秒 ;
  • 丰富的数据类型, Redis支持二进制案例的Strings, Lists, Hashes, Sets 及 Ordered Sets 数据类型操作;
  • 原子性,Redis的所有操作都是原子性的,意思就是要么成功执行,要么失败完全不执行。单个操作是原子性的。多个操作也支持事务,即原子性,通过MULTIEXEC指令包起来;
  • 丰富的特性,Redis还支持 publish/subscribe(发布订阅), 通知, key过期等等特性。

Redis 的用途

Redis的所有数据在使用时都存放在内存中,由于Redis的性能极高,且数据类型丰富等优势,Redis通常被用来缓存应用经常被访问的热点数据。当然,Redis还有其它用途,如分布式锁、计数器等等,不详细介绍。

Java 中连接Redis

Java中使用Redis前,我们需要确保已经安装了Redis服务及对应的Java Redis驱动,并且在你的机器上配置好了Java环境。这些环境配置在实训环境中已经为你配置好了,在此不需要关注。如果在自己电脑上使用,需要从官网下载Redis安装,并把Java Redis驱动文件Jedis.jar添加到ClassPath中。

下面代码是完成环境配置后,在Java代码中连接Redis的示例。

  1. package step3;
  2. import redis.clients.jedis.Jedis;
  3. public class ConnRedisDemo {
  4. public static void main(String[] args) {
  5. //redis数据所在的主机,如果是redis安装在本机,则是localhost或127.0.0.1
  6. String redisHost = "192.168.1.134";
  7. int redisPort=6379;//Redis监听的端口,默认为6379
  8. //创建1个Jedis对象。这是用来操作Redis数据库
  9. Jedis jedis = new Jedis(redisHost,redisPort);
  10. System.out.println("连接成功");
  11. String resp = jedis.ping();//调用jedis的方法,查看服务是否运行
  12. System.out.println("Redis服务正在运行" + resp);//
  13. jedis.close();//关闭redis连接
  14. }
  15. }

上面代码中,我们连接的是位于主机192.168.1.134上的Redis数据库,Redis数据库监听的端口号为6379(默认端口)。如果Redis服务正常运行,上面代码输出如下。

  1. 连接成功
  2. Redis服务正在运行PONG

Redis 字符串实例

Redis支持的数据类型非常丰富,下面是一个操作字符串类型key-value的示例。

  1. package step3;
  2. import redis.clients.jedis.Jedis;
  3. /**
  4. * @author zpengx@outlook.com
  5. * @description
  6. */
  7. public class RedisStrDemo {
  8. public static void main(String[] args) {
  9. String redisHost = "192.168.1.128";//Redis数据所在的主机
  10. int redisPort = 6379;//Redis监听的端口,默认为6379
  11. Jedis jedis = new Jedis(redisHost, redisPort);
  12. System.out.println("连接成功");
  13. //保存一个字符串类型的key-value对到Redis中
  14. jedis.set("educoder", "www.educoder.net");
  15. //根据key从Redis中取出数据输出
  16. String val = jedis.get("educoder");
  17. String val2 = jedis.get("educoder2");
  18. System.out.println("Redis存储的字符串为: " + val);
  19. System.out.println("Redis存储的字符串为: " + val2);
  20. jedis.close();
  21. }
  22. }

首先我们通过指定IP和端口连接上对应的Redis数据库,然后把一个keyeducodervaluewww.educoder.net的键值对存入Redis中,然后通过key获取对应的value的值。而对于jedis.get("educoder2"),因为Redis中没有keyeducoder2的键值对,所以返回null。上面代码的输出结果如下:

  1. 连接成功
  2. Redis存储的字符串为: www.educoder.net
  3. Redis存储的字符串为: null

编程要求

现有键值对:key1:welcomekey2:tokey3:wwwkey4:educoderkey5:net。根据提示,在右侧编辑器 Begin-End 区间补充redisExec(Jedis jedis)方法的代码,实现如下功能:

  • 把上面这些键值对存入Redis中;
  • 根据keyRedis中取出value的值,拼成一个字符串并返回,相邻value之间有空格。

返回的字符串为welcome to www educoder net ,测试代码会输出返回的字符串。

测试说明

平台会对你编写的代码进行测试: 预期输出:

  1. welcome to www educoder net

参考代码 

RedisDemo.java

package step3;

import redis.clients.jedis.Jedis;

public class RedisDemo {
    private static String[] keys = new String[]{"key1", "key2", "key3", "key4", "key5"};
    private static String[] values = new String[]{"welcome", "to", "www", "educoder", "net"};
    //jedis对象已经连接Redis数据库,请直接使用jedis对象操作
    public String redisExec(Jedis jedis) {
        //retStr保存拼接的字符串
        //期望的返回结果是welcome to www educoder net
        StringBuilder retStr = new StringBuilder();
        /********** Begin *********/
        for (int i = 0; i < keys.length; i++) {
            jedis.set(keys[i],values[i]);
        }
        for (String key : keys) {
            retStr.append(jedis.get(key)).append(" ");
        }
        retStr.deleteCharAt(retStr.length()-1);
        /********** End *********/
        return retStr.toString();
    }
}

  • 3
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

于建章

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值