第25章 Redis入门必备:Java操作Redis实战案例

本文档详细介绍了如何使用Java操作Redis数据库,涵盖安装配置、基本命令以及五大数据类型的实战应用。通过一系列具体示例,如字符串、哈希、列表、集合和有序集合的操作,帮助读者快速掌握Redis的核心功能。适合有Java基础的开发者进阶学习。

任务描述

任务名称 Redis基本操作
任务要求 1、熟练掌握安装和配置Redis数据库2、掌握Redis数据库数据类型3、学会Redis基本命令4、学会使用Jedis:Java连接开发工具,Java操作Redis操作中间件
任务内容 1、Java语言操作Redis数据库2、熟练使用Redis五种数据类型下的应用
提交内容 实践操作

分为六个部分:keys命令操作、String数据操作、Hash数据操作、List数据操作、Set数据操作、zSet数据操作。

结构类型 结构存储的值 结构的读写能力
String 可以是字符串、整数或者浮点数 对整个字符串或者字符串的其中一部分执行操作;对象和浮点数执行自增(increment)或者自减(decrement)
List 一个链表,链表上的每个节点都包含了一个字符串 从链表的两端推入或者弹出元素;根据偏移量对链表进行修剪(trim);读取单个或者多个元素;根据值来查找或者移除元素
Set 包含字符串的无序收集器(unorderedcollection),并且被包含的每个字符串都是独一无二的、各不相同 添加、获取、移除单个元素;检查一个元素是否存在于某个集合中;计算交集、并集、差集;从集合里卖弄随机获取元素
Hash 包含键值对的无序散列表 添加、获取、移除单个键值对;获取所有键值对
ZSet 字符串成员(member)与浮点数分值(score)之间的有序映射,元素的排列顺序由分值的大小决定 添加、获取、删除单个元素;根据分值范围(range)或者成员来获取元素

任务准备

1、安装和配置好Redis数据库

2、熟练Redis基本操作

3、有一定的Java基础

4、熟练使用Redis客户端工具redis-cli

任务实施

一、新建一个Java工程

二、新建lib包,放入第三方redis依赖包:jedis-2.9.0.jar、commons-pool2-2.4.2.jar、hamcrest-core-1.3.jar、junit-4.12.jar

可以到mvnrepository.com/ 搜索下载

三、新建com.creatorblue.redis包,存储测试类

四、新建TestStringOperate类测试字符串下Redis的常用操作,内容如下:

typescript 复制代码
package com.creatorblue.redis;

import org.junit.Test;
import redis.clients.jedis.Jedis;

public class TestStringOperate {
    private static Jedis jedis = new Jedis("127.0.0.1", 6379);

    public static void main(String[] args) {
        System.out.println("服务启动..." + jedis.ping());
    }

    @Test
    public void getsetTest() {
        String oldValue = jedis.getSet("brand1", "itcast");
        System.out.println(oldValue);
    }
    @Test
    public void strlenTest() {
        Long valueLen = jedis.strlen("brand6");
        System.out.println(valueLen);
    }
    @Test
    public void getrangeTest() {
        String value = jedis.getrange("brand6", 4, 7);
        System.out.println(value);
    }
    @Test
    public void appendTest() {
        Long len = jedis.append("brand1", "heima");
        System.out.println(len);
    }
}

五、新建TestKeyOperate类测试key下Redis的常用操作,内容如下:

typescript 复制代码
package com.creatorblue.redis;

import org.junit.Test;
import redis.clients.jedis.Jedis;

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

public class TestKeyOperate {

    private static Jedis jedis = new Jedis("127.0.0.1", 6379);
    public static void main(String[] args) {
        System.out.println("服务启动..." + jedis.ping());
        jedis.flushDB();
    }


    /*
     *为指定键设置值
     * */
    @Test
    public void setTest() {
        String key = jedis.set("company", "itcast");
        System.out.println(key);
    }

    @Test
    public void msetTest() {
        String manyKey = jedis.mset("brand1", "heima", "brand2", "chuanzhihui", "brand3",
                "kudingyu","brand4","boxuegu","brand5","czzxxy","brand6","yuanxiaobang");
        System.out.println(manyKey);
    }

    @Test
    public void keysTest() {
        Set<String> keys = jedis.keys("*");
        Iterator<String> itKeys = keys.iterator();
        while (itKeys.hasNext()){
            String key = itKeys.next();
            System.out.println(key);
        }
    }

    @Test
    public void mgetTest() {
        List<String> values = jedis.mget("brand1", "brand3", "brand");
        for (String value : values) {
            System.out.println(value);
        }
    }

    @Test
    public void existTest() {
        Boolean result1 = jedis.exists("company");
        Boolean result2 = jedis.exists("brand0");
        System.out.println(result1+"------------"+result2);
    }

    @Test
    public void renameTest() {
        String rename = jedis.rename("company", "companyNew");
        System.out.println(rename);
    }

    @Test
    public void delTest() {
        Long result = jedis.del("companyNew");
        System.out.println(result);
    }
}

六、新建TestHashOperate类测试哈希下Redis的常用操作,内容如下:

typescript 复制代码
package com.creatorblue.redis;

import org.junit.Test;
import redis.clients.jedis.Jedis;

import java.util.*;

public class TestHashOperate {
    private static Jedis jedis = new Jedis("127.0.0.1", 6379);
    public static void main(String[] args) {
        System.out.println("服务启动..." + jedis.ping());
    }

    @Test
    public void hmsetTest() {
        Map<String,String> map = new HashMap<>();
        map.put("content", "hello world");
        map.put("author", "peter");
        String hash = jedis.hmset("article", map);
        System.out.println(hash);
    }
    @Test
    public void hgetallTest() {
        Map<String, String> map = jedis.hgetAll("article");
        Set<Map.Entry<String, String>> set = map.entrySet();
        Iterator<Map.Entry<String, String>> iterator = set.iterator();
        while (iterator.hasNext()){
            Map.Entry<String, String> keyVal = iterator.next();
            System.out.println(keyVal);
        }

    }
    @Test
    public void hkeysTest() {
        Set<String> keys = jedis.hkeys("article");
        Iterator<String> iterator = keys.iterator();
        while (iterator.hasNext()){
            String key = iterator.next();
            System.out.println(key);
        }
    }

    @Test
    public void hvalsTest() {
        List<String> vals = jedis.hvals("article");
        for (String val : vals) {
            System.out.println(val);
        }
    }

    @Test
    public void hdelTest() {
        Long result = jedis.hdel("article", "author");
        System.out.println(result);

    }

}

七、新建TestListOperate类测试列表下Redis的常用操作,内容如下:

java 复制代码
package com.creatorblue.redis;

import org.junit.Test;
import redis.clients.jedis.Jedis;
import java.util.List;

public class TestListOperate {
    private static Jedis jedis = new Jedis("127.0.0.1", 6379);
    public static void main(String[] args) {
        System.out.println("服务启动..." + jedis.ping());
    }
    @Test
    public void rpushAndLpushTest(){
        //将5个元素推入列表color的右端
        Long rpush = jedis.rpush("color", "blue", "green", "purple", "red", "white");
        //将3个元素推入列表color的左端
        Long lpush = jedis.lpush("color", "black","pink");
        System.out.println(rpush+"-----"+lpush);
    }
    @Test
    public void lrangeTest (){
        List<String> values = jedis.lrange("color", 0, 6);
        for (String value : values) {
            System.out.println(value);
        }
    }
    @Test
    public void lindexTest (){
        String value = jedis.lindex("color", 5);
        System.out.println(value);
    }
    @Test
    public void lpopTest (){
        String value = jedis.lpop("color");
        System.out.println(value);
    }
    @Test
    public void llenTest (){
        Long len = jedis.llen("color");
        System.out.println(len);
    }
    @Test
    public void lremTest (){
        Long result = jedis.lrem("color", 1, "red");
        System.out.println(result);
    }
}

七、新建TestSsetsOperate测试无序集合下Redis的常用操作,内容如下:

typescript 复制代码
package com.creatorblue.redis;

import org.junit.Test;
import redis.clients.jedis.Jedis;

import java.util.*;

public class TestSsetsOperate {
    private static Jedis jedis = new Jedis("127.0.0.1", 6379);
    public static void main(String[] args) {
        System.out.println("服务启动..." + jedis.ping());
    }
    @Test
    public void zaddTest() {
        Map<String,Double> map = new HashMap<>();
        map.put("jack",5.0);
        map.put("bob",3.5);
        map.put("tom",6.0);
        Long result = jedis.zadd("score", map);
        System.out.println(result);
    }
    @Test
    public void zrangeTest() {
        Set<String> score = jedis.zrange("score", 0, -1);
        Iterator<String> iterator = score.iterator();
        while (iterator.hasNext()){
            String next = iterator.next();
            System.out.println(next);
        }
    }
    @Test
    public void zcardTest () {
        Long num = jedis.zcard("score");
        System.out.println(num);
    }
    @Test
    public void zcountTest() {
        Long num = jedis.zcount("score", 2.0, 4.0);
        System.out.println(num);
    }
    @Test
    public void zscoreTest() {
        Double zscore = jedis.zscore("score", "jack");
        System.out.println(zscore);
    }
    @Test
    public void zremTest() {
        Long result = jedis.zrem("score", "tom");
        System.out.println(result);
    }
}
相关推荐
没书读了29 分钟前
ssm框架-spring-spring声明式事务
java·数据库·spring
i道i1 小时前
MySQL win安装 和 pymysql使用示例
数据库·mysql
小怪兽ysl1 小时前
【PostgreSQL使用pg_filedump工具解析数据文件以恢复数据】
数据库·postgresql
wqq_9922502772 小时前
springboot基于微信小程序的食堂预约点餐系统
数据库·微信小程序·小程序
爱上口袋的天空2 小时前
09 - Clickhouse的SQL操作
数据库·sql·clickhouse
Oak Zhang2 小时前
sharding-jdbc自定义分片算法,表对应关系存储在mysql中,缓存到redis或者本地
redis·mysql·缓存
聂 可 以3 小时前
Windows环境安装MongoDB
数据库·mongodb
web前端神器3 小时前
mongodb多表查询,五个表查询
数据库·mongodb
门牙咬脆骨3 小时前
【Redis】redis缓存击穿,缓存雪崩,缓存穿透
数据库·redis·缓存
门牙咬脆骨3 小时前
【Redis】GEO数据结构
数据库·redis·缓存