Redis官网:https://redis.io/
Redis中文网:http://www.redis.cn/
学习视频:【狂神说Java】Redis最新超详细版教程通俗易懂
Jedis
什么是Jedis
jedis 是官方推荐的java连接开发工具!使用java操作redis中间件!如果你要使用java操作redis,那么一定要对jedis十分熟悉!
Jedis使用
导入对应依赖
<!-- 导入jedis 的包 -->
<dependencies>
<dependency>
<groupId>redis.clients</groupId>
<artifactId>jedis</artifactId>
<version>3.3.0</version>
</dependency>
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>fastjson</artifactId>
<version>1.2.75</version>
</dependency>
</dependencies>
编码测试
- 连接数据库
- 操作命令
- 断开连接
测试代码
public static void main(String[] args) {
Jedis jedis = new Jedis("127.0.0.1", 6379);
System.out.println(jedis.ping());
jedis.close();
}
常用API
常用API
public static void main(String[] args) {
Jedis jedis = new Jedis("127.0.0.1", 6379);
System.out.println(jedis.ping());
System.out.println("清空库数据:" + jedis.flushDB());
System.out.println("清空所有库数据:" + jedis.flushAll());
System.out.println("设置多个key:" + jedis.mset("k1", "v1", "k2", "v2", "k3", "3"));
System.out.println("判断某个k1是否存在:" + jedis.exists("k1"));
System.out.println("获取库中所有key:" + jedis.keys("*"));
System.out.println("删除k1:" + jedis.del("k1"));
System.out.println("查看key的类型:" + jedis.type("k2"));
System.out.println("随机返回一个key:" + jedis.randomKey());
System.out.println("重命名key: " + jedis.rename("k3", "k4"));
System.out.println("获取当前库的key的数量:" + jedis.dbSize());
System.out.println("选择其他库:" + jedis.select(2));
jedis.close();
}
String
public static void main(String[] args) throws InterruptedException {
Jedis jedis = new Jedis("127.0.0.1", 6379);
System.out.println(jedis.ping());
jedis.flushDB();
System.out.println("设置多个key:" + jedis.mset("k1", "v1", "k2", "v2", "k3", "3"));
System.out.println("获取K1值:" + jedis.get("k1"));
System.out.println("获取多个key:" + jedis.mget("k1", "k2", "k3"));
System.out.println("删除多个值:" + jedis.del("k1", "k2"));
jedis.flushDB();
System.out.println("不存在时设置值:" + jedis.setnx("k1", "v1"));
System.out.println("不存在时设置值:" + jedis.setnx("k1", "v2"));
System.out.println("k1的值:" + jedis.get("k1"));
System.out.println("设置值同时设置过期时间:" + jedis.setex("k2", 30, "v2"));
TimeUnit.SECONDS.sleep(3);
System.out.println("获取k2的剩余过期时间:" + jedis.ttl("k2"));
System.out.println("获取原值,同时设置新值:" + jedis.getSet("k2", "k2getset"));
System.out.println("k2值:" + jedis.get("k2"));
System.out.println("获取指定范围的值:" + jedis.getrange("k2" , 0, 4));
jedis.flushDB();
jedis.close();
}
Hash
public static void main(String[] args) {
Jedis jedis = new Jedis("127.0.0.1", 6379);
System.out.println(jedis.ping());
jedis.flushDB();
HashMap<String, String> map = new HashMap<>();
map.put("k1", "v1");
map.put("k2", "v2");
map.put("k3", "v3");
map.put("k4", "v4");
// 批量添加名称为myhash的hash元素
jedis.hmset("myhash", map);
// 向名称为myhash的hash中,添加 key为k5,value为v5的元素
jedis.hset("myhash", "k5", "v5");
System.out.println("获取myhash中的所有键值对:" + jedis.hgetAll("myhash"));
System.out.println("获取myhash中的所有键:" + jedis.hkeys("myhash"));
System.out.println("获取myhash中的所有value: " + jedis.hvals("myhash"));
System.out.println("将k6的值加上一个整数,如果k6不存在,则赋值:" + jedis.hincrBy("myhash", "k6", 3));
System.out.println("k6: " + jedis.hget("myhash", "k6"));
System.out.println("将k6的值加上一个整数,如果k6不存在,则赋值:" + jedis.hincrBy("myhash", "k6", 3));
System.out.println("k6: " + jedis.hget("myhash", "k6"));
jedis.flushDB();
jedis.close();
}
事务
public static void main(String[] args) {
Jedis jedis = new Jedis("127.0.0.1", 6379);
System.out.println(jedis.ping());
jedis.flushDB();
JSONObject jsonObject = new JSONObject();
jsonObject.put("name", "zhangsan");
jsonObject.put("age", 1);
String result = jsonObject.toJSONString();
Transaction multi = jedis.multi(); // 开启事务
// jedis.watch("key"); 开启监视
try {
multi.set("user1", result);
multi.set("user2", result);
int i = 1/0;
multi.exec();
} catch (Exception e) {
multi.discard(); // 放弃事务
e.printStackTrace();
} finally {
System.out.println("user1: " + jedis.get("user1"));
System.out.println("user2: " + jedis.get("user2"));
jedis.close();
}
}