使用Java操作Redis
文章目录
- 常用Redis键操作命令
- 使用Java操作Redis
- 配置 Redis 连接信息
- 创建 Maven 项目结构
- 操作字符串
- 操作列表
- 操作集合
- 操作散列
- 操作有序集合
- 总结
报错解决办法:
当使用redis-cli连接客户端出现not connected
时
使用redis-cli -h 192.168.222.101 -p 6379
即可解决
常用Redis键操作命令
1.SET命令–为指定键设置值
set key value [expiration EX seconds|PX milliseconds] [NX|XX]
2.MSET命令–给多个键设置值
mset key value [key value ...]
3.KEYS命令–查找符合给定模式pattern的键
keys pattern
4.GET命令–获取指定键的值
get key
5.MGET命令–获得多个键的值
mget key [key ...]
6.DUMP命令–序列化指定的键,并返回序列化的值
dump key
7.EXISTS命令–判断指定键是否存在
exists key [key ...]
8.TYPE命令–查看指定键的类型
type key
9.RENAME命令–修改指定键的名称
rename key newkey
10.EXPIRE命令–设置键的生存时间
expire key seconds
11.TTL命令–查看指定键的剩余设置时间
ttl key
12.PERSIST命令–移除指定键的生存时间
persist key
13.DEL命令–删除指定键
del key [key ...]
使用Java操作Redis
1、运行命令:firewall-cmd --get-active-zones
2、执行如下命令命令:firewall-cmd --zone=public --add-port=6379/tcp --permanent
3、重启防火墙,运行命令:firewall-cmd --reload
4、查看端口号是否开启,运行命令:firewall-cmd --query-port=6379/tcp
做完以上操作 就会把CentOS的防火墙打开6379的端口
配置 Redis 连接信息
确保您的 Redis 服务器配置允许远程连接:
- 编辑 Redis 配置文件
/etc/redis/redis.conf
,将bind 127.0.0.1
修改为bind 0.0.0.0
,或者添加您的服务器 IP - 注释掉
protected-mode yes
或设置为protected-mode no
接着启动Redis 启动教程
java连接linux中的redis:
创建 Maven 项目结构
首先,创建一个标准的 Maven 项目结构:
my-redis-project/
├── pom.xml
└── src/
└── main/
└── java/
└── com.redistest/
└── Test.java
配置 pom.xml 文件
创建一个包含 Jedis 依赖的 pom.xml 文件:
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.example</groupId>
<artifactId>redis-demo</artifactId>
<version>1.0-SNAPSHOT</version>
<properties>
<maven.compiler.source>1.8</maven.compiler.source>
<maven.compiler.target>1.8</maven.compiler.target>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
</properties>
<dependencies>
<!-- Redis Java Client -->
<dependency>
<groupId>redis.clients</groupId>
<artifactId>jedis</artifactId>
<version>4.3.1</version>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.8.1</version>
<configuration>
<source>1.8</source>
<target>1.8</target>
</configuration>
</plugin>
<!-- 添加Maven Exec插件,用于直接运行主类 -->
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>exec-maven-plugin</artifactId>
<version>3.1.0</version>
<configuration>
<mainClass>com.example.Test</mainClass>
</configuration>
</plugin>
</plugins>
</build>
</project>
更新一下maven:
test测试连接文件:
package com.redistest;
import redis.clients.jedis.Jedis;
public class test {
private static Jedis jedis=new Jedis("192.168.222.101",6379);
public static void main(String[] args) {
System.out.println("redis start..."+jedis.ping());
}
}
结果出现:
至此,您已经成功连接到Redis服务器了!
当然,从设置-插件中也有redis的可视化插件:
第一个收费,有30天免费体验
第二个免费
操作字符串
创建TestString.java文件
(1)获取指定字符串键的旧值并设置新值
@Test
public void getsetTest(){
String oldValue =jedis.getset("brand1","itcast");
System.out.println(oldValue);
}
(2)获取字符串键指定索引范围的值内容。
@Test
public void getrangeTest(){
String value =jedis.getrange("brand6",4,7);
System.out.println(value);
}
操作列表
创建TestList.java文件,
(1)将一个或多个元素推入到列表中
@Test
public void rpushAndLpushrest() {
//将5个元素推人列表 color的右端
Long rpush = jedis.rpush("color", "green", "black", "purple", "white", "blue");
// 将2个元素推人列表 color的左端
Long lpush = jedis.lpush("color", "pink", "red");
System.out.println(rpush + "-----" + lpush);
}
(2)获取列表中元素的个数
public void lrangeTest() {
List<String> values = jedis.lrange("color", 0, 6);
for (String value : values) {
System.out.println(value);
}
}
(3)移除列表的指定元素。
public void lremTest () {
Long ll = jedis.lrem("color", 1, "red");
System.out.println(ll);
}
实现完整代码:
package com.redistest;
import redis.clients.jedis.Jedis;
import java.util.List;
public class TestList {
private static Jedis jedis = new Jedis("192.168.222.101", 6379);
public static void main(String[] args) {
System.out.println("服务启动..." + jedis.ping());
// 调用测试方法
TestList test = new TestList();
test.rpushAndLpushrest();
test.lrangeTest();
test.lremTest();
}
public void rpushAndLpushrest() {
//将5个元素推人列表 color的右端
Long rpush = jedis.rpush("color", "green", "black", "purple", "white", "blue");
// 将2个元素推人列表 color的左端
Long lpush = jedis.lpush("color", "pink", "red");
System.out.println(rpush + "-----" + lpush);
}
public void lrangeTest() {
List<String> values = jedis.lrange("color", 0, 6);
for (String value : values) {
System.out.println(value);
}
}
public void lremTest () {
Long ll = jedis.lrem("color", 1, "red");
System.out.println(ll);
}
}
操作集合
创建TestSet.java文件
(1)将一个或多个元素添加到集合中
public void saddTest() {
Long result = jedis.sadd("databases", "mongodb", "redis", "hbase");
System.out.println(result);
}
(2)获取集合中的所有元素
public void smembersTest () {
Set<String> databases = jedis.smembers("databases");
Iterator<String> database = databases.iterator();
while (database.hasNext()) {
String db = database.next();
System.out.println(db);
}
}
(3)移除集合中一个或多个已经存在的元素。
public void sremTest() {
Long result = jedis.srem("databases", "hbase");
System.out.println(result);
}
实现完整代码:
package com.redistest;
import redis.clients.jedis.Jedis;
import java.util.Iterator;
import java.util.Set;
public class TestSet {
private static Jedis jedis = new Jedis("192.168.222.101", 6379);
public static void main(String[] args) {
System.out.println("服务启动..."+jedis.ping());
// 调用测试方法
TestSet test = new TestSet();
test.saddTest();
test.smembersTest();
test.sremTest();
}
public void saddTest() {
Long result = jedis.sadd("databases", "mongodb", "redis", "hbase");
System.out.println(result);
}
public void smembersTest () {
Set<String> databases = jedis.smembers("databases");
Iterator<String> database = databases.iterator();
while (database.hasNext()) {
String db = database.next();
System.out.println(db);
}
}
public void sremTest() {
Long result = jedis.srem("databases", "hbase");
System.out.println(result);
}
}
操作散列
创建TestHash.java文件,
(1)为散列中多个键设置值
@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)
}
(2)获取散列中的所有键值对
@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);
}
}
(3)删除散列中指定键及其相对应的值。
@Test
public void hdelTest(){
Long result =jedis.hdel("article","author");
System.out.println(result);
}
操作有序集合
创建TestSsets.java文件,
(1)为有序集合添加一个或多个键值对
public void zaddTest() {
Map<String, Double> map = new HashMap<>();
map.put("wurui", 5.0);
map.put("bob", 3.5);
map.put("jack", 6.0);
Long result = jedis.zadd("score", map);
System.out.println(result);
}
(2)统计有序集合中指定分值范围内的元素个数
public void zcountTest() {
Long num = jedis.zcount("score", 2, 4);
System.out.println(num);
}
(3)移除有序集合中的指定元素。
public void zremTest() {
Long result = jedis.zrem("score", "tom");
System.out.println(result);
}
实现完整代码:
package com.redistest;
import redis.clients.jedis.Jedis;
import java.util.HashMap;
import java.util.Map;
public class TestSets {
private static Jedis jedis = new Jedis("192.168.222.101", 6379);
public static void main(String[] args) {
System.out.println("服务启动..." + jedis.ping());
// 调用测试方法
TestSets test = new TestSets();
test.zaddTest();
test.zcountTest();
test.zremTest();
}
public void zaddTest() {
Map<String, Double> map = new HashMap<>();
map.put("wurui", 5.0);
map.put("bob", 3.5);
map.put("jack", 6.0);
Long result = jedis.zadd("score", map);
System.out.println(result);
}
public void zcountTest() {
Long num = jedis.zcount("score", 2, 4);
System.out.println(num);
}
public void zremTest() {
Long result = jedis.zrem("score", "tom");
System.out.println(result);
}
}
总结
至此,我们已经完成了对常用Redis键操作命令,使用Java操作Redis,配置 Redis 连接信息,操作字符串、列表、集合、散列、有序集合的学习啦!