通过Jedis操作Redis
大约 4 分钟数据库技术Redis
配置阿里云主机Redis远程访问
设置Redis密码
127.0.0.1:6379> config get requirepass
1) "requirepass"
2) ""
127.0.0.1:6379> config set requirepass ****** # 设置密码
OK
127.0.0.1:6379> config get requirepass
1) "requirepass"
2) "******"
127.0.0.1:6379> config rewrite # 将连接密码写进当前使用的redis.conf。不然下一次重启会报错
OK
打开redis.conf,注释掉 bind 127.0.0.1
IF YOU ARE SURE YOU WANT YOUR INSTANCE TO LISTEN TO ALL THE INTERFACES
# JUST COMMENT OUT THE FOLLOWING LINE.
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# bind 127.0.0.1
配置安全组规则,开放6379端口

使用Java来操作Redis
什么是Jedis?是Redis官方推荐的Java连接开发工具。使用Java操作Redis中间件。如果你要使用Java操作Redis,那么一定要对Jedis十分的熟悉。
知其然,知其所以然。
1、导入依赖
<!--导入jedis依赖-->
<dependency>
<groupId>redis.clients</groupId>
<artifactId>jedis</artifactId>
<version>3.3.0</version>
</dependency>
<!--fastjson-->
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>fastjson</artifactId>
<version>1.2.73</version>
</dependency>
2、编码测试
连接数据库
操作命令
断开连接
public class TestPing {
public static void main(String[] args) {
Jedis jedis = new Jedis("127.0.0.1",6379);
System.out.println(jedis.ping());
}
}
PONG
Process finished with exit code 0
常用API
对key操作的命令
public class TestKey {
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.exists("username"));
System.out.println("新增键值对<username,hejin>:" + jedis.set("username", "hejin"));
System.out.println("新增键值对<password,password>:" + jedis.set("password", "password"));
System.out.println("系统中所有的键:");
Set<String> keys = jedis.keys("*");
System.out.println(keys);
System.out.println("删除键password:" + jedis.del("password"));
System.out.println("判断password键是否存在:" + jedis.exists("password"));
System.out.println("查看键username所存储的值的类型:" + jedis.type("username"));
System.out.println("随机返回key空间的一个:" + jedis.randomKey());
System.out.println("重命名key:" + jedis.rename("username", "name"));
System.out.println("取出改后的name:" + jedis.get("name"));
System.out.println("切换到0号数据库:" + jedis.select(0));
System.out.println("删除当前选择数据库的所有key:" + jedis.flushDB());
System.out.println("返回当前数据库中key的数目:" + jedis.dbSize());
System.out.println("删除索引数据库中的所有key:" + jedis.flushAll());
}
}
PONG
清空数据:OK
判断某个键是否存在:false
新增键值对<username,hejin>:OK
新增键值对<password,password>:OK
系统中所有的键:
[password, username]
删除键password:1
判断password键是否存在:false
查看键username所存储的值的类型:string
随机返回key空间的一个:username
重命名key:OK
取出改后的name:hejin
切换到0号数据库:OK
删除当前选择数据库的所有key:OK
返回当前数据库中key的数目:0
删除索引数据库中的所有key:OK
Process finished with exit code 0
对String操作的命令
public class TestString {
public static void main(String[] args) {
Jedis jedis = new Jedis("127.0.0.1",6379);
jedis.flushDB();
System.out.println("=======增加数据=======");
System.out.println(jedis.set("key1", "value1"));
System.out.println(jedis.set("key2", "value2"));
System.out.println(jedis.set("key3", "value3"));
System.out.println("删除键key2:" + jedis.del("key2"));
System.out.println("获取键key2:" + jedis.get("key2"));
System.out.println("修改key1:" + jedis.set("key1", "vlaue1changed"));
System.out.println("获取key1的值:" + jedis.get("key1"));
System.out.println("在key3后面加入值:" + jedis.append("key3", "End"));
System.out.println("key3的值:" + jedis.get("key3"));
System.out.println("增加多个键值对:" + jedis.mset("key01", "value01","key02", "value02","key03", "value03","key04", "value04"));
System.out.println("获取多个键值对:" + jedis.mget("key01","key02","key03"));
System.out.println("获取多个键值对:" + jedis.mget("key01","key02","key03","key04"));
System.out.println("删除多个键值对:" + jedis.del("key01","key02"));
System.out.println("获取多个键值对:" + jedis.mget("key01","key02","key03"));
jedis.flushDB();
System.out.println("=======新增键值对防止覆盖原先值=======");
System.out.println(jedis.setnx("key1", "value1"));
System.out.println(jedis.setnx("key2", "value2"));
System.out.println(jedis.setnx("key2", "value2-new"));
System.out.println(jedis.get("key1"));
System.out.println(jedis.get("key2"));
System.out.println("=======新增键值对并设置有效时间=======");
System.out.println(jedis.setex("key3", 2, "value3"));
System.out.println(jedis.get("key3"));
try {
TimeUnit.SECONDS.sleep(3);
} catch (InterruptedException e) {
e.printStackTrace();
}
System.out.println(jedis.get("key3"));
System.out.println("=======获取原值,更新为新值=======");
System.out.println(jedis.getSet("key2", "key2GetSet"));
System.out.println(jedis.get("key2"));
System.out.println("获得key2的值的子串:" + jedis.getrange("key2", 2, 4));
}
}
=======增加数据=======
OK
OK
OK
删除键key2:1
获取键key2:null
修改key1:OK
获取key1的值:vlaue1changed
在key3后面加入值:9
key3的值:value3End
增加多个键值对:OK
获取多个键值对:[value01, value02, value03]
获取多个键值对:[value01, value02, value03, value04]
删除多个键值对:2
获取多个键值对:[null, null, value03]
=======新增键值对防止覆盖原先值=======
1
1
0
value1
value2
=======新增键值对并设置有效时间=======
OK
value3
null
=======获取原值,更新为新值=======
value2
key2GetSet
获得key2的值的子串:y2G
Process finished with exit code 0
对List操作的命令
对Set操作的命令
对Hash操作的命令
对Zset操作的命令
在jedis中,这些命令与之前在命令行学习的Redis命令一样。只是变成了一个个的方法。