Redis Java API的使用以及Redis在springboot中的使用

1. Redis Java API的使用

redis java Api 和redis的命令很类似,可以参考下面的代码

1.1如果使用的是maven工程,引入下面的依赖

<dependency>
    <groupId>redis.clients</groupId>
    <artifactId>jedis</artifactId>
    <version>3.6.1</version>
</dependency>

1.2 测试代码

package com.zimmor.redis;

import redis.clients.jedis.Jedis;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Set;

/**
 * @Author:zimmor
 * @Date: 2021/7/4 13:21
 * @Description redis Java Api使用
 * @version: 1.0.0
 */

public class RedisDemo1 {

    //建立了连接的redis客户端jedis
    private static Jedis jedis;
    public static void main(String[] args) {
        //redis的java Api使用和redis的命令很类似
        //和服务器建立连接
        connectServer("192.168.204.129");
        //String类型
        testString();
        //Hash类型
        testHash();
        //List类型
        testList();
        //Set类型
        testSet();
        //Zset类型
        testZset();
    }

    /**
     * redis Zset类型
     */
    private static void testZset() {
        jedis.zadd("myZset", 5, "spring");
        jedis.zadd("myZset", 1, "springboot");
        Long code = jedis.zadd("myZset", 2, "springmvc");
        Long code2 = jedis.zadd("myZset", 2, "springData");
        Set<String> myZset = jedis.zrange("myZset", 0, 10);
        System.out.println("Zset类型 返回值1:" + code);
        System.out.println("Zset类型 返回值2:" + code2);
        System.out.println("Zset类型 返回所有结果" + myZset);
    }

    /**
     * redis Set类型
     */
    private static void testSet() {
        Long code = jedis.sadd("nums", "1", "2", "5", "3", "7");
        Set<String> numbers = jedis.smembers("nums");
        System.out.println("Set类型返回值:" + code);
        System.out.println("Set类型返回结果" + numbers);
    }

    /**
     * redis List类型
     */
    private static void testList() {
        jedis.lpush("language", "英语");
        jedis.rpush("language", "汉语");
        Long code = jedis.lpush("language", "法语", "德语");
        List<String> language = jedis.lrange("language", 0, 10);
        System.out.println("List类型返回值:" + code);
        System.out.println("List类型返回结果:" + language);
    }

    /**
     * 和redis服务器建立连接
     * @param hostIp 主机ip
     */
    private static void connectServer(String hostIp) {
        jedis = new Jedis(hostIp);
    }

    /**
     *redis String类型的操作
     */
    private static void testString() {
        String code = jedis.set("name", "nacos");
        String result = jedis.get("name");
        System.out.println("String类型 返回值" + code );
        System.out.println("String类型 获取结果:" + result);
    }

    /**
     * redis Hash类型的操作
     */
    private static void testHash() {
        //redis中的hash对应的是java中的key-value都为字符串的Map
        Map myHash = new HashMap();
        myHash.put("name", "niko");
        myHash.put("age", "45");
        String code = jedis.hmset("teacher", myHash);
        String name = jedis.hget("teacher", "name");
        //获取map中的所有元素
        Map<String, String> teacher = jedis.hgetAll("teacher");
        System.out.println("Hash的返回值" + code );
        System.out.println("Hash类型 获取name元素的值:" + name);
        System.out.println("Hash类型 获取的所有元素的结果" + teacher);
    }
}

2.springboot中使用redis

2.1 引入相关依赖

<!--springDataRedis依赖-->
<dependency>
     <groupId>org.springframework.boot</groupId>
     <artifactId>spring-boot-starter-data-redis</artifactId>
 </dependency>
 <!--测试时使用,如果不测试可以不引入-->
 <dependency>
     <groupId>org.springframework.boot</groupId>
     <artifactId>spring-boot-starter-test</artifactId>
 </dependency>

2.2 application.yml配置文件

spring:
  redis:
    host: 192.168.204.129

3.3 测试代码,代码是使用springboot的单元测试进行的测试

package com.zimmor.redis;

import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.data.redis.core.*;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
import org.springframework.test.context.web.WebAppConfiguration;

import java.util.List;
import java.util.Set;

/**
 * @Author:zimmor
 * @Date: 2021/7/4 16:31
 * @Description 测试springboot中使用redis
 * @version: 1.0.0
 */
@RunWith(SpringJUnit4ClassRunner.class)
@SpringBootTest(classes = RedisApplication.class)
public class SpringDataRedisTest {
    @Autowired
    private RedisTemplate<String, String> redisTemplate;
    /**
     * redisTemplate使用时,通过ops***()方法得到相关类型的操作对象,然后的操作和jedis类似
     */

    /**
     * 测试String类型
     */
    @Test
    public void testString() {
        ValueOperations valueOperations = redisTemplate.opsForValue();
        valueOperations.set("name", "java");
        Object name = valueOperations.get("name");
        System.out.println("name = " + name);
    }

    /**
     * 测试Hash类型
     */
    @Test
    public void testHash() {
        HashOperations hashOperations = redisTemplate.opsForHash();
        hashOperations.put("user", "name", "tony");
        hashOperations.put("user", "age", "18");
        String name = hashOperations.get("user", "name").toString();
        String age = hashOperations.get("user", "age").toString();
        System.out.println("name = " + name);
        System.out.println("age = " + age);
    }

    /**
     * 测试List类型
     */
    @Test
    public void testList() {
        ListOperations listOperations = redisTemplate.opsForList();
        listOperations.leftPush("language", "汉语");
        listOperations.rightPush("language", "英语");
        listOperations.leftPush("language", "法语");
        listOperations.leftPush("language", "德语");
        listOperations.leftPush("language", "西班牙语", "意大利语");
        List language = listOperations.range("language", 0, 10);
        System.out.println("language = " + language);
    }

    /**
     * 测试Set类型
     */
    @Test
    public void testSet() {
        SetOperations setOperations = redisTemplate.opsForSet();
        setOperations.add("numbers", "1", "2", "3", "5", "4");
        Set numbers = setOperations.members("numbers");
        System.out.println("numbers = " + numbers);
    }

    /**
     * 测试Zset类型
     */
    @Test
    public void testZset() {
        ZSetOperations zSetOperations = redisTemplate.opsForZSet();
        zSetOperations.add("myZset", "Spring", 5);
        zSetOperations.add("myZset", "Springmvc", 51);
        zSetOperations.add("myZset", "Springboot", 1);
        zSetOperations.add("myZset", "Springcloud", 3);
        Set myZset = zSetOperations.range("myZset", 0, 10);
        System.out.println("myZset = " + myZset);
    }
}
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 205,386评论 6 479
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 87,939评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 151,851评论 0 341
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,953评论 1 278
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,971评论 5 369
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,784评论 1 283
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,126评论 3 399
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,765评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 43,148评论 1 300
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,744评论 2 323
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,858评论 1 333
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,479评论 4 322
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,080评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,053评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,278评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,245评论 2 352
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,590评论 2 343

推荐阅读更多精彩内容