Redis的简单实践
Redis的简单实践
文章目录
- Redis的简单实践
- 前言
- Redis简介
- Redis基本操作命令
- Java使用Redis
- 使用IDEA搭建Redis项目
- 使用Jedis进行简单增删改查
- 使用Jedis操作对象
前言
在进行 Redis 的操作之前,请确保电脑上已经安装了 Redis。
如果还没有安装 Redis 的,请参考这篇博客进行安装 Win10安装Redis
Redis简介
Redis
是一个高性能的key-value
分布式内存数据库,基于内存运行,并支持持久化的 NoSQL 数据库。
Redis 是运行在内存中的,所以读写速度非常快,因此 Redis 被广泛应用在缓存方向。
Redis的优点:
- 速度快,因为数据存在内存中
- 支持丰富的数据类型,支持 String、list、set、sorted set、hash
- 支持事务,操作都是原子性的
- 特性丰富,可用于缓存、消息。按 key 设置过期时间,到期自动删除
- 支持主从复制,进行读写分离
- 支持数据持久化,支持
AOF
、RDB
两种方式
Redis的应用场景:
- 热点数据的缓存
- 限时业务的应用
- 分布式锁
- 延时操作
- 分页、模糊查找
- ······
Redis基本操作命令
命令 | 说明 |
---|---|
set KeyName Value
|
设置 key 和 value 的值’ |
get KeyName
|
获取对应键的值 |
keys * | 获取所有的键(注意空格) |
dbsize | 获取所有键的数量 |
exists KeyName
|
检查键是否存在 |
del KeyName
|
删除键 |
type KeyName
|
查看键的类型 |
expire KeyName 60
|
设置键的过期时间为60秒 |
persist KeyName
|
设置键永不过期 |
rename KeyName NewKeyName
|
修改键的名字 |
sadd CollectionName xx1 xx2 xx3
|
创建集合 |
smembers CollectionName
|
获取集合 |
sismember CollectionName xx
|
判断集合中是否存在xx元素 |
scard CollectionName
|
获取集合中元素的个数 |
srem CollectionName xx
|
删除集合中的xx元素 |
根据前言中的参考博客所述,通过 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 方法,可以看到,我们已经成功实现了对象的存取。
Redis的简单实践相关推荐
- [ 搭建Redis本地服务器实践系列三 ] :图解Redis客户端工具连接Redis服务器
原文:[ 搭建Redis本地服务器实践系列三 ] :图解Redis客户端工具连接Redis服务器 上一章 [ 搭建Redis本地服务器实践系列二 ] :图解CentOS7配置Redis 介绍了Red ...
- 干货 | 如何在京东云上简单实践CI流程
如何在京东云上简单实践CI流程 在如今的互联网时代,随着软件开发复杂度的不断提高,软件开发和发布管理也越来越重要.目前已经形成一套标准的流程,最重要的组成部分就是持续集成及持续交付.部署.在此,我们在 ...
- 网易数帆基于 Kubernetes 的 Redis 云原生实践综述
随着云原生时代的到来和Kubernetes(简称K8s)的日渐成熟,越来越多的互联网团队开始将Kubernetes作为新的重要基础设施,一些云计算厂商也将其视作云服务及应用交付的新底座.在大家的普遍认 ...
- 【第66期】火山引擎Redis云原生实践
点击上方????蓝字关注我们! 本文整理自火山引擎开发者社区首次 Meetup 中的分享<Redis 云原生实践>,主要介绍了将 Redis 部署到 K8s 的抽象流程,以及火山引擎在 R ...
- 知乎技术分享:从单机到2000万QPS并发的Redis高性能缓存实践之路
本文来自知乎官方技术团队的"知乎技术专栏",感谢原作者陈鹏的无私分享. 1.引言 知乎存储平台团队基于开源Redis 组件打造的知乎 Redis 平台,经过不断的研发迭代,目前已经 ...
- 贪心算法简单实践 -- 分糖果、钱币找零、最多区间覆盖、哈夫曼编解码
1. 贪心算法概览 贪心算法是一种算法思想.希望能够满足限制的情况下将期望值最大化.比如:Huffman编码,Dijkstra单源最短路径问题,Kruskal最小生成树 等问题都希望满足限制的情况下用 ...
- Dubbo入门(2) - 简单实践
作者:不洗碗工作室 - Marklux 出处:Dubbo入门(2) - 简单实践 版权归作者所有,转载请注明出处 在了解什么是分布式框架之后,我们需要上手实践一下,来了解整个系统是如何运作起来的. 本 ...
- 深度学习——RNN原理与TensorFlow2下的IMDB简单实践
在深度学习中,RNN是处理序列数据的有效方法之一,也是深度的一种很好的体现,本文将简单介绍RNN的工作方式,以及针对IMDB数据集的简单实践 RNN简介 RNN(Recurrent Neural Ne ...
- Spring 学习二-----AOP的原理与简单实践
一.Spring AOP的原理 AOP全名Aspect-Oriented Programming,中文直译为面向切面(方面)编程.何为切面,就比如说我们系统中的权限管理,日志,事务等我们都可以将其看 ...
最新文章
- Thinkphp3.2学习(一)
- Buuctf(pwn)ciscn_2019_n_8
- javascript事件处理程序
- dreamweaver连接mysql数据库 发生一个不知名错误_用DREAMWEAVER连接数据库测试时总是弹出发生一个不知名的错误 你好! 请问一下这个问题你是怎么解的?...
- 一起谈.NET技术,Visual Studio对程序集签名时一个很不好用的地方
- php链接mysql数据库
- 在eclipse中修改android源码
- 快速了解安卓四大组件
- 为oracle分配空间,ORACLE内存分配与调整(一)
- Vue2.0+Vue3.0全套教程
- html5如何修改登录页面的背景,HTML5 月夜背景的用户登录界面
- Hibernate中No row with the given identifier exis
- Extracting and Composing Robust Features with Denoising Autoencoders论文笔记
- mysql数据库主机名是什么_mysql数据库主机名是什么
- 【面试招聘】计算机网络专场(一)
- 星起航:跨境电商迎来黄金时代,未来或将持续释放红利
- matlab大津法函数,大津(Ostu)阈值分割方法在matlab中的实现
- 2022 年合肥市经开区第七届青少年信息学竞赛 小学组试题题解
- 2021遥感应用组二等奖:流域水质,生态监测与形貌学分析—以洞庭湖流域为例
- P6专题:P6核心技术(多级计划,单代号,项目组合,关键路径,赢得值等)