本文档详细介绍了如何使用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);
}
}