前言
在进行 Redis 的操作之前,请确保电脑上已经安装了 Redis。
如果还没有安装 Redis 的,请参考这篇博客进行安装 Win10安装Redis
Redis简介
Redis 是一个高性能的 key-value 分布式内存数据库,基于内存运行,并支持持久化的 NoSQL 数据库。
Redis 是运行在内存中的,所以读写速度非常快,因此 Redis 被广泛应用在缓存方向。
Redis的优点:
速度快,因为数据存在内存中
支持丰富的数据类型,支持 String、list、set、sorted set、hash
支持事务,操作都是原子性的
特性丰富,可用于缓存、消息。按 key 设置过期时间,到期自动删除
支持主从复制,进行读写分离
支持数据持久化,支持 AOF、RDB 两种方式
Redis的应用场景:
热点数据的缓存
限时业务的应用
分布式锁
延时操作
分页、模糊查找
······
Redis基本操作命令
根据前言中的参考博客所述,通过 cmd 打开 redis 服务,可以在命令行中练习以上操作命令,以求掌握,这里就不贴图做演示了。
Java使用Redis
使用IDEA搭建Redis项目
使用 IDEA创建 Redis 项目分为六步:
创建一个新项目
选择“Maven”
填写项目路径
检查项目信息
等待项目构建成功
导入相关依赖
首先,我们打开 IDEA,创建一个新项目。
在左侧选择“Maven”,Project SDK选择为自己的 JDK安装目录,勾选“Create form archetype”,选择“quickstart”快速启动的工程,点击 next。
然后我们填写项目名称,选择自己喜欢的路径,点击 next。
接着我们要检查项目信息,看看包名什么的是否需要修改。这里一般都是采用默认设置,直接 finish 即可。
等待项目加载完成。如果IDEA界面的右下角弹出提示 Maven项目需要导入,选择“Enable Auto-Import”让其自动导入。
如果项目加载完成后看到了如下警告,可以忽略不管,这不会影响到项目的使用。
项目构建完成,我们打开 pom.xml 文件,导入 redis 的相关依赖。这里导入了 Jedis 的依赖、阿里的一个 json 处理类
<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.73</version> </dependency> |
这两个依赖导入完成后,整个项目就搭建完成了,我们可以开始使用了。
使用Jedis进行简单增删改查
Jedis是 Redis 官方推荐的 Java 连接开发工具。对 Jedis的熟练使用可以让我们在 Java 开发中使用好 Redis 中间件。
我们新建一个 util 目录,在目录下新建一个 RedisUtil 工具类,用于获取 Redis 的连接。
import redis.clients.jedis.Jedis; import redis.clients.jedis.JedisPool; import redis.clients.jedis.JedisPoolConfig; public class RedisUtil { //定义连接池和对象 public static JedisPoolConfig poolConfig = new JedisPoolConfig(); public static JedisPool jedisPool = null; public static Jedis jedis = null; static { //简单配置 poolConfig.setMaxIdle(50);//最大空闲数 poolConfig.setMaxTotal(100);//最大连接数 poolConfig.setMaxWaitMillis(20000);//最长等待时间(毫秒) //进行连接 jedisPool = new JedisPool(poolConfig, "127.0.0.1"); //获取jedis对象 jedis = jedisPool.getResource(); } } |
因为我们是将 redis 装在了本机电脑上,所以配置连接池时直接使用的是 127.0.0.1 ,如果是装在服务器上的,更换为服务器的IP地址。
当然,我们需要通过 cmd 窗口启动 redis 的服务,不然运行 java 代码会报错。
接着我们新建一个 run 目录, 在目录下新建 JedisTest 类来进行操作
import org.example.util.RedisUtil; import redis.clients.jedis.Jedis; public class JedisTest { Jedis jedis = RedisUtil.jedis; //增 public void setKeyValue(String key, String value) { jedis.set(key, value); } //查 public String getKeyValue(String key) { return jedis.get(key); } //删 public void delKey(String key) { jedis.del(key); } //改 public void updateKey(String oldKey, String newKey) { jedis.rename(oldKey, newKey); } public static void main(String[] args) { JedisTest jedisTest = new JedisTest(); //设置键值对 jedisTest.setKeyValue("test1", "hello"); jedisTest.setKeyValue("test2", "hello2"); //取值 String v1 = jedisTest.getKeyValue("test1"); String v2 = jedisTest.getKeyValue("test2"); System.out.println("test1:"+v1+"\ntest2:"+v2); System.out.println("\n"); //删除 jedisTest.delKey("test2"); String v3 = jedisTest.getKeyValue("test2"); System.out.println("test2:"+v3); System.out.println("\n"); //改名 jedisTest.updateKey("test1","mytest"); String v4 = jedisTest.getKeyValue("test1"); String v5 = jedisTest.getKeyValue("mytest"); System.out.println("test1:"+v4+",mytest:"+v5); } } |
运行 main 方法,可以看到,我们已经成功插入了键值对,删改查也成功实现。
使用Jedis操作对象
我们之前使用的都是 String 类型,现在我们要通过 jedis 来传入对象。
新建一个 pojo 目录,在目录下新建 User 类,实现构造函数和 Get and Set 方法。
public class User { private String name; private String school; private int age; public User() { } public User(String name, String school, int age) { this.name = name; this.school = school; this.age = age; } public String getName() { return name; } public void setName(String name) { this.name = name; } public String getSchool() { return school; } public void setSchool(String school) { this.school = school; } public int getAge() { return age; } public void setAge(int age) { this.age = age; } } |
在 run 目录中新建一个 UserTest 类,实现对象的存储和查询
import com.alibaba.fastjson.JSON; import org.example.pojo.User; import org.example.util.RedisUtil; import redis.clients.jedis.Jedis; public class UserTest { Jedis jedis = RedisUtil.jedis; //增 public void setObject(String key, Object obj) { jedis.set(key, JSON.toJSONString(obj)); } //查 public Object getObject(String key, Class clazz) { return JSON.parseObject(jedis.get(key), clazz); } public static void main(String[] args) { UserTest userTest = new UserTest(); //设置对象 User user = new User("Bob", "BIT", 20); //进行存取 userTest.setObject("user", user); User user2 = (User) userTest.getObject("user", User.class); System.out.println("name:"+user2.getName()); System.out.println("school:"+user2.getSchool()); System.out.println("age:"+user2.getAge()); } } |
这里因为 value 必须是字符串或者是数组,我们要传入对象的话得通过 JSON 的 toJSonString() 方法把对象转换为字符串。同样地,取出的时候也要使用 parseObject() 方法转换成对象才行。
运行 main 方法,可以看到,我们已经成功实现了对象的存取。
本文内容不用于商业目的,如涉及知识产权问题,请权利人联系博为峰小编(021-64471599-8017),我们将立即处理