Redis的简单实践

文章目录

  • Redis的简单实践
    • 前言
    • Redis简介
    • Redis基本操作命令
    • Java使用Redis
      • 使用IDEA搭建Redis项目
      • 使用Jedis进行简单增删改查
      • 使用Jedis操作对象

前言

在进行 Redis 的操作之前,请确保电脑上已经安装了 Redis。

如果还没有安装 Redis 的,请参考这篇博客进行安装 Win10安装Redis

Redis简介

Redis 是一个高性能的 key-value 分布式内存数据库,基于内存运行,并支持持久化的 NoSQL 数据库。

Redis 是运行在内存中的,所以读写速度非常快,因此 Redis 被广泛应用在缓存方向

Redis的优点:

  1. 速度快,因为数据存在内存中
  2. 支持丰富的数据类型,支持 String、list、set、sorted set、hash
  3. 支持事务,操作都是原子性的
  4. 特性丰富,可用于缓存、消息。按 key 设置过期时间,到期自动删除
  5. 支持主从复制,进行读写分离
  6. 支持数据持久化,支持 AOFRDB 两种方式

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 项目分为六步:

  1. 创建一个新项目
  2. 选择“Maven”
  3. 填写项目路径
  4. 检查项目信息
  5. 等待项目构建成功
  6. 导入相关依赖

首先,我们打开 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的简单实践相关推荐

  1. [ 搭建Redis本地服务器实践系列三 ] :图解Redis客户端工具连接Redis服务器

    原文:[ 搭建Redis本地服务器实践系列三 ] :图解Redis客户端工具连接Redis服务器 上一章 [ 搭建Redis本地服务器实践系列二 ] :图解CentOS7配置Redis  介绍了Red ...

  2. 干货 | 如何在京东云上简单实践CI流程

    如何在京东云上简单实践CI流程 在如今的互联网时代,随着软件开发复杂度的不断提高,软件开发和发布管理也越来越重要.目前已经形成一套标准的流程,最重要的组成部分就是持续集成及持续交付.部署.在此,我们在 ...

  3. 网易数帆基于 Kubernetes 的 Redis 云原生实践综述

    随着云原生时代的到来和Kubernetes(简称K8s)的日渐成熟,越来越多的互联网团队开始将Kubernetes作为新的重要基础设施,一些云计算厂商也将其视作云服务及应用交付的新底座.在大家的普遍认 ...

  4. 【第66期】火山引擎Redis云原生实践

    点击上方????蓝字关注我们! 本文整理自火山引擎开发者社区首次 Meetup 中的分享<Redis 云原生实践>,主要介绍了将 Redis 部署到 K8s 的抽象流程,以及火山引擎在 R ...

  5. 知乎技术分享:从单机到2000万QPS并发的Redis高性能缓存实践之路

    本文来自知乎官方技术团队的"知乎技术专栏",感谢原作者陈鹏的无私分享. 1.引言 知乎存储平台团队基于开源Redis 组件打造的知乎 Redis 平台,经过不断的研发迭代,目前已经 ...

  6. 贪心算法简单实践 -- 分糖果、钱币找零、最多区间覆盖、哈夫曼编解码

    1. 贪心算法概览 贪心算法是一种算法思想.希望能够满足限制的情况下将期望值最大化.比如:Huffman编码,Dijkstra单源最短路径问题,Kruskal最小生成树 等问题都希望满足限制的情况下用 ...

  7. Dubbo入门(2) - 简单实践

    作者:不洗碗工作室 - Marklux 出处:Dubbo入门(2) - 简单实践 版权归作者所有,转载请注明出处 在了解什么是分布式框架之后,我们需要上手实践一下,来了解整个系统是如何运作起来的. 本 ...

  8. 深度学习——RNN原理与TensorFlow2下的IMDB简单实践

    在深度学习中,RNN是处理序列数据的有效方法之一,也是深度的一种很好的体现,本文将简单介绍RNN的工作方式,以及针对IMDB数据集的简单实践 RNN简介 RNN(Recurrent Neural Ne ...

  9. Spring 学习二-----AOP的原理与简单实践

    一.Spring  AOP的原理 AOP全名Aspect-Oriented Programming,中文直译为面向切面(方面)编程.何为切面,就比如说我们系统中的权限管理,日志,事务等我们都可以将其看 ...

最新文章

  1. Thinkphp3.2学习(一)
  2. Buuctf(pwn)ciscn_2019_n_8
  3. javascript事件处理程序
  4. dreamweaver连接mysql数据库 发生一个不知名错误_用DREAMWEAVER连接数据库测试时总是弹出发生一个不知名的错误 你好! 请问一下这个问题你是怎么解的?...
  5. 一起谈.NET技术,Visual Studio对程序集签名时一个很不好用的地方
  6. php链接mysql数据库
  7. 在eclipse中修改android源码
  8. 快速了解安卓四大组件
  9. 为oracle分配空间,ORACLE内存分配与调整(一)
  10. Vue2.0+Vue3.0全套教程
  11. html5如何修改登录页面的背景,HTML5 月夜背景的用户登录界面
  12. Hibernate中No row with the given identifier exis
  13. Extracting and Composing Robust Features with Denoising Autoencoders论文笔记
  14. mysql数据库主机名是什么_mysql数据库主机名是什么
  15. 【面试招聘】计算机网络专场(一)
  16. 星起航:跨境电商迎来黄金时代,未来或将持续释放红利
  17. matlab大津法函数,大津(Ostu)阈值分割方法在matlab中的实现
  18. 2022 年合肥市经开区第七届青少年信息学竞赛 小学组试题题解
  19. 2021遥感应用组二等奖:流域水质,生态监测与形貌学分析—以洞庭湖流域为例
  20. P6专题:P6核心技术(多级计划,单代号,项目组合,关键路径,赢得值等)

热门文章

  1. 云VS本地,一言难尽的ERP
  2. Spring boot 集成工作流flowable去掉xml配置
  3. 网络:HTTP报文格式
  4. 18.用宏定义实现 得到两个数的最值
  5. 第九届蓝桥杯java B组—第二题方格计数(详细介绍)
  6. axure9 邮件点击效果_EDM邮件营销,你不得不知道的8个指标?
  7. python中循环迭代语句_python条件与循环-循环
  8. 动环监控系统的组成都有什么呢?
  9. 湿度传感器如何工作?
  10. 9300万美元投资涌入 新加坡成亚太最大数据中心