一、引言
不是吧,不是吧 ~
都 2021 年了还有人只会打永劫无间 ! 不会用 redis 的命令吧 !
二、应用场景
String类似的使用场景:value 除了是我们的字符串还可以是我们的数字 !
1.计数器
2.统计多单位的数量
3.对象存储缓存
三、String数据类型常用命令
下面的命令大全,本人亲测,可放心食用 !
package com.tianwang.springboot_porpdd.jedis;
import redis.clients.jedis.Jedis;
import java.util.concurrent.TimeUnit;
/**
* @author WangYan
* @date 2021/9/15 21:08
* redis String 类型基本命令
*/
public class TestString {
public static void main(String[] args) {
Jedis jedis = new Jedis("localhost",6379);
// 基本命令
// basicCommand(jedis);
// 进阶用法
read(jedis);
}
/**
* String 类型 基础用法
* @param jedis
*/
public static void basicCommand(Jedis jedis){
// 存取
jedis.set("k1","v1");
jedis.get("k1");
// 字符串追加长度,Key 不存在 就新建一个
jedis.append("k1","kkt");
System.out.println(jedis.get("k1"));
// 获取字符串长度
System.out.println(jedis.strlen("k1"));
}
/**
* 举例子 : 微信文章,每次进来访问量加1
* 每次加1
*/
public static void read(Jedis jedis){
jedis.set("views","0");
// 加1
for (int i = 0; i <= 2 ; i++) {
jedis.incr("views");
}
// 减1
jedis.decr("views");
System.err.println(jedis.get("views"));
/**
* 每次加减的数可自定义
*/
// 每次加三
jedis.incrBy("views",3);
// 每次减三
jedis.decrBy("views",3);
/**
* 截取字符串
*/
jedis.set("kkt","hello,word");
System.err.println(jedis.getrange("kkt", 0, 4));
// 获取全部 Value 字符串
System.out.println(jedis.getrange("kkt", 0, -1));
System.out.println("==================================================");
/**
* 指定位置字符串替换!
*/
jedis.set("kkp","hello,word");
jedis.setrange("kkp",0,"1");
System.out.println(jedis.get("kkp"));
System.out.println("==================================================");
/**
* setex (set with expire) 设置过期时间
* setnx (set if not exits) 不存在再设置 (在分布式锁中会经常用到!)
*/
// 设置过期时间
jedis.setex("张三",2,"小红");
try {
TimeUnit.SECONDS.sleep(2);
} catch (InterruptedException e) {
e.printStackTrace();
}
System.out.println(jedis.get("张三"));
/**
* 如果 database 不存在,就创建 database
* database 存在,创建失败 !
*/
jedis.set("database","mysql");
System.out.println(jedis.get("database"));
jedis.setnx("database","redis");
System.out.println(jedis.get("database"));
// redis
jedis.setnx("database1","redis");
System.out.println(jedis.get("database1"));
System.out.println("==================================================");
jedis.flushDB();
/**
* mset :批量set值
* mget :批量获取key
*/
jedis.mset("t1","1","t2","2","t3","3");
// 获取所有key
jedis.keys("*");
// 根据K 获取V
jedis.mget("t1", "t2", "t3");
/**
* msetnx : 是一个原子性操作,要么全部成功! 要么全部失败!
*/
System.err.println(jedis.msetnx("ttt1", "v1", "p1", "110"));
System.out.println(jedis.get("p1"));
jedis.flushDB();
/**
* 组合命令 getset : 先去获取值,然后再往里面set值
*/
jedis.getSet("db","redis"); // 如果不存在,返回 null
System.out.println(jedis.get("db")); // redis
System.out.println(jedis.getSet("db", "mongodb")); // redis 如果存在值,获取原来的值,再把这个值给 set 进去
System.out.println(jedis.get("db")); // mongodb
}
}
四、总结
以上就是redis中String基本数据类型常用的命令,大家可自己上手亲测 ~