一. 下载Jedis包
1. Jedis包: https://mvnrepository.com/artifact/redis.clients/jedis
2. Jedis源码: https://github.com/redis/jedis
二. Jedis字符串操作
1. 新建一个名为JedisString的Java项目, 拷入相关jar包, 并添加到build path
2. Jedis添加和获取一个字符串类型的k-v
2.1. 代码
2.2. 运行结果
3. Jedis添加和获取多个字符串类型的k-v
3.1. 代码
3.2. 运行结果
4. Jedis添加和获取实体类对象k-v
4.1. 代码
4.2. 运行结果
5. Jedis添加不存在的key
5.1. 代码
5.2. 运行结果
6. Jedis添加字符串k-v, 同时设置过期时间
6.1. 代码
6.2. 运行结果
7. Jedis替换字符串
7.1. 代码
7.2. 运行结果
8. Jedis从指定位置替换字符串
8.1. 代码
8.2. 运行结果
9. Jedis添加一个或多个key不存在的字符串
9.1. 代码
9.2. 运行结果
10. Jedis添加字符串k-v, 同时设置过期时间
10.1. 代码
10.2. 运行结果
11. Jedis对数字进行递增、递减、增加一个整形数字、减少一个整形数字和增加一个浮点值
11.1. 代码
11.2. 运行结果
12. Jedis追加字符串
12.1. 代码
12.2. 运行结果
13. Jedis返回key中字符串值的子字符
13.1. 代码
13.2. 运行结果
14. 全部代码
14.1. Student.java
package com.redis.string;
import java.io.Serializable;
public class Student implements Serializable {
private static final long serialVersionUID = 1L;
private Integer id; // 编号
private String name; // 名字
private Character sex; // 姓别
private Float height; // 身高
private Double weight; // 体重
private Byte age; // 年龄
private Long birthday; // 出生日期
public Student() {
}
public Student(Integer id, String name, Character sex, Float height, Double weight, Byte age, Long birthday) {
this.id = id;
this.name = name;
this.sex = sex;
this.height = height;
this.weight = weight;
this.age = age;
this.birthday = birthday;
}
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public Character getSex() {
return sex;
}
public void setSex(Character sex) {
this.sex = sex;
}
public Float getHeight() {
return height;
}
public void setHeight(Float height) {
this.height = height;
}
public Double getWeight() {
return weight;
}
public void setWeight(Double weight) {
this.weight = weight;
}
public Byte getAge() {
return age;
}
public void setAge(Byte age) {
this.age = age;
}
public Long getBirthday() {
return birthday;
}
public void setBirthday(Long birthday) {
this.birthday = birthday;
}
@Override
public String toString() {
return "Student [id=" + id + ", name=" + name + ", sex=" + sex + ", height=" + height + ", weight=" + weight
+ ", age=" + age + ", birthday=" + birthday + "]";
}
}
14.2. ObjectByteUtil.java
package com.redis.string;
import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
public class ObjectByteUtil {
public static byte[] objectToBytes(Object obj) {
try {
ByteArrayOutputStream baos = new ByteArrayOutputStream();
ObjectOutputStream oos = new ObjectOutputStream(baos);
oos.writeObject(obj);
oos.flush();
return baos.toByteArray();
} catch (IOException e) {
e.printStackTrace();
}
return null;
}
public static Object bytesToObject(byte[] bytes) {
try {
ByteArrayInputStream bais = new ByteArrayInputStream(bytes);
ObjectInputStream ois = new ObjectInputStream(bais);
return ois.readObject();
} catch (ClassNotFoundException | IOException e) {
e.printStackTrace();
}
return null;
}
}
14.3. RedisString.java
package com.redis.string;
import redis.clients.jedis.Jedis;
/***
* Jedis操作String数据类型
*/
public class RedisString {
public static void main(String[] args) {
jedisSetex();
}
/**
* jedis添加和获取一个字符串类型的k-v
*/
public static void jedisSetGetOneKey() {
Jedis jedis = new Jedis("192.168.25.138", 6379);
jedis.auth("lyw123456");
int idZs = 100001;
String nameZs = "张三";
char sexZs = '男';
float heightZs = 178.5F;
double weightZs = 80.75;
byte ageZs = 22;
long birthdayZs = 1111111111;
System.out.println("添加idZs " + jedis.set("idZs", String.valueOf(idZs)));
System.out.println("添加nameZs " + jedis.set("nameZs", String.valueOf(nameZs)));
System.out.println("添加sexZs " + jedis.set("sexZs", String.valueOf(sexZs)));
System.out.println("添加heightZs " + jedis.set("heightZs", String.valueOf(heightZs)));
System.out.println("添加weightZs " + jedis.set("weightZs", String.valueOf(weightZs)));
System.out.println("添加ageZs " + jedis.set("ageZs", String.valueOf(ageZs)));
System.out.println("添加birthdayZs " + jedis.set("birthdayZs", String.valueOf(birthdayZs)));
System.out.println("idZs = " + jedis.get("idZs"));
System.out.println("nameZs = " + jedis.get("nameZs"));
System.out.println("sexZs = " + jedis.get("sexZs"));
System.out.println("heightZs = " + jedis.get("heightZs"));
System.out.println("weightZs = " + jedis.get("weightZs"));
System.out.println("ageZs = " + jedis.get("ageZs"));
System.out.println("birthdayZs = " + jedis.get("birthdayZs"));
jedis.close();
}
/**
* jedis添加和获取多个字符串类型的k-v
*/
public static void jedisSetGetMultiKey() {
Jedis jedis = new Jedis("192.168.25.138", 6379);
jedis.auth("lyw123456");
int idLs = 100002;
String nameLs = "李四";
char sexLs = '男';
float heightLs = 175.5F;
double weightLs = 77.55;
byte ageLs = 20;
long birthdayLs = 2222222;
System.out.println("添加 " + jedis.mset("idLs", String.valueOf(idLs), "nameLs", String.valueOf(nameLs),
"sexLs", String.valueOf(sexLs), "heightLs", String.valueOf(heightLs), "weightLs", String.valueOf(weightLs),
"ageLs", String.valueOf(ageLs), "birthdayLs", String.valueOf(birthdayLs)));
System.out.println(jedis.mget("idLs", "nameLs", "sexLs", "heightLs", "weightLs", "ageLs", "birthdayLs"));
jedis.close();
}
/**
* jedis添加和获取实体类对象k-v
*/
public static void jedisSetGetObject() {
Jedis jedis = new Jedis("192.168.25.138", 6379);
jedis.auth("lyw123456");
Student student = new Student(100003, "王五", '男', 188.5F, 57.65D, (byte)18, 3333333333L);
System.out.println("添加 " + jedis.set("student".getBytes(), ObjectByteUtil.objectToBytes(student)));
Object obj = ObjectByteUtil.bytesToObject(jedis.get("student".getBytes()));
System.out.println(obj.toString());
jedis.close();
}
/**
* jedis添加不存在的key
*/
public static void jedisSetnx() {
Jedis jedis = new Jedis("192.168.25.138", 6379);
jedis.auth("lyw123456");
Long result = jedis.setnx("nameZl", "赵六");
if(result == 1) {
System.out.println("添加成功。");
}else {
System.out.println("添加失败。");
}
jedis.close();
}
/**
* jedis添加字符串k-v, 同时设置过期时间
*/
public static void jedisSetex() {
Jedis jedis = new Jedis("192.168.25.138", 6379);
jedis.auth("lyw123456");
System.out.println("添加 nameXh " + jedis.setex("nameXh", 60, "小红"));
System.out.println("nameXh = " + jedis.get("nameXh"));
try {
Thread.sleep(70000);
} catch (InterruptedException e) {
e.printStackTrace();
}
System.out.println("nameXh = " + jedis.get("nameXh"));
jedis.close();
}
/**
* jedis替换字符串
*/
public static void jedisGetSet() {
Jedis jedis = new Jedis("192.168.25.138", 6379);
jedis.auth("lyw123456");
System.out.println("nameXl = " + jedis.get("nameXl"));
jedis.getSet("nameXl", "小兰");
System.out.println("nameXl = " + jedis.get("nameXl"));
jedis.getSet("nameXl", "小蓝");
System.out.println("nameXl = " + jedis.get("nameXl"));
jedis.close();
}
/**
* jedis从指定位置替换字符串
*/
public static void jedisGetrange() {
Jedis jedis = new Jedis("192.168.25.138", 6379);
jedis.auth("lyw123456");
System.out.println("添加 nameXl " + jedis.set("nameXl", "小绿-乌拉乌拉")); // 在utf-8编码中, 一个汉字3个字节
System.out.println("nameXl = " + jedis.get("nameXl"));
System.out.println("字符串字节数" + jedis.setrange("nameXl", 6, "-哼哈哼哈")); // 从0开始计数, 从第6个字节的位置开始替换
System.out.println("nameXl = " + jedis.get("nameXl"));
System.out.println("字符串字节数" + jedis.setrange("nameXl", 22, "-哼哈哼哈"));
System.out.println("nameXl = " + jedis.get("nameXl"));
jedis.close();
}
/**
* jedis添加一个或多个key不存在的字符串
*/
public static void jedisMsetnx() {
Jedis jedis = new Jedis("192.168.25.138", 6379);
jedis.auth("lyw123456");
long result = jedis.msetnx("nameXh", "小黄", "ageXh", "12");
if(result == 1) {
System.out.println("添加成功。");
}else {
System.out.println("添加失败。");
}
jedis.close();
}
/**
* jedis添加字符串k-v, 同时设置过期时间
*/
public static void jedisPsetex() {
Jedis jedis = new Jedis("192.168.25.138", 6379);
jedis.auth("lyw123456");
System.out.println("添加nameXz " + jedis.psetex("nameXz", 60000, "小紫"));
System.out.println("nameXz = " + jedis.get("nameXz"));
try {
Thread.sleep(70000);
} catch (InterruptedException e) {
e.printStackTrace();
}
System.out.println("nameXz = " + jedis.get("nameXz"));
jedis.close();
}
/**
* jedis对数字进行递增、递减、增加一个整形数字、减少一个整形数字和增加一个浮点值
*/
public static void jedisIncrDecr() {
Jedis jedis = new Jedis("192.168.25.138", 6379);
jedis.auth("lyw123456");
jedis.set("ageZsf", "149");
System.out.println("ageZsf = " + jedis.get("ageZsf"));
System.out.println("ageZsf = " + jedis.incr("ageZsf"));
System.out.println("ageZsf = " + jedis.incrBy("ageZsf", 9));
System.out.println("ageZsf = " + jedis.decr("ageZsf"));
System.out.println("ageZsf = " + jedis.decrBy("ageZsf", 9));
System.out.println("ageZsf = " + jedis.incrByFloat("ageZsf", 17.5));
jedis.close();
}
/**
* jedis追加字符串
*/
public static void jedisAppend() {
Jedis jedis = new Jedis("192.168.25.138", 6379);
jedis.auth("lyw123456");
jedis.set("nameZwj", "张无忌");
System.out.println("result = " + jedis.append("nameZwj", ",张翠山"));
System.out.println("nameZwj = " + jedis.get("nameZwj"));
System.out.println("nameZwj字符串长度 = " + jedis.strlen("nameZwj"));
jedis.close();
}
/**
* jedis返回key中字符串值的子字符
*/
public static void jedisRange() {
Jedis jedis = new Jedis("192.168.25.138", 6379);
jedis.auth("lyw123456");
jedis.set("nameHqg", "六指神丐-洪七公");
// 截取第12和13字节处的字符
System.out.println("result = " + jedis.getrange("nameHqg", 12, 13));
// 截取第12~30字节处的字符, 30字节超出了字符串的字节数, 就是截取12字节后的所有字符
System.out.println("result = " + jedis.getrange("nameHqg", 12, 30));
// 如果一个位置为负数, 就是用总字节数加上负数, 22-3=19~30字节处的字符
System.out.println("result = " + jedis.getrange("nameHqg", -3, 30));
// 如果一个位置为负数, 就是用总字节数加上负数, 22-25=-3, 还是负数直接取0~2
System.out.println("result = " + jedis.getrange("nameHqg", -25, 2));
jedis.close();
}
}