017_Jedis的String数据类型

一. 下载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();
	}
}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值