【Redis】Redis初识

一、redis概述

1、redis

redis:一款高性能的NOSQL系列的非关系型数据库redis

2、NoSQL

NoSQL:泛指非关系型的数据库

NOSQL分类:

  1. 键值(Key-Value)存储数据库:内容缓存,主要用于处理大量数据的高访问负载
  2. 列存储数据库:分布式的文件系统
  3. 文档型数据库:Web应用
  4. 图形(Graph)数据库:社交网络

3、下载安装

  1. 官网:https://redis.io
  2. 中文网:http://www.redis.net.cn
  3. 解压直接可以使用
  1. redis.windows.conf:配置文件
  2. redis-cli.exe:redis的客户端
  3. redis-server.exe:redis服务器端

二、redis数据结构

key:字符串

value:

  1. 字符串类型 string
  2. 哈希类型 hash:map格式
  3. 列表类型 list :linkedlist格式,支持重复元素
  4. 集合类型 set :不允许重复元素
  5. 有序集合类型 sortedset:不允许重复元素,且元素有序

三、redis命令

类型存储获取删除
stringset key valueget keydel key
hashhset key field valuehget key field
hgetall key
lrange start end
hdel key field
listlpush key value
rpush key value
lrange key start endlpop key
rpop key
setsadd key valuesmembers keysrem key value
sortedsetzadd key score valuezrange key start end [withscores]zrem key value
  1. keys * :查询所有的键
  2. type key :获取键对应的value的类型
  3. del key:删除指定的key value

四、redis持久化

1、redis持久化概述

redis是一个内存数据库,当redis服务器重启,获取电脑重启,数据会丢失,我们可以将redis内存中的数据持久化保存到硬盘的文件中。

2、RDB

  1. 默认方式,不需要进行配置,默认就使用这种机制

  2. 在一定的间隔时间中,检测key的变化情况,然后持久化数据

  3. 修改配置

    1. 编辑redis.windwos.conf文件

      ##   after 900 sec (15 min) if at least 1 key changed
      save 900 1
      ##   after 300 sec (5 min) if at least 10 keys changed
      save 300 10
      ##   after 60 sec if at least 10000 keys changed
      save 60 10000
      
    2. 重新启动redis服务器,并指定配置文件名称

      >redis-server.exe redis.windows.conf
      

3、AOF

  1. 日志记录的方式,可以记录每一条命令的操作。可以每一次命令操作后,持久化数据

  2. 配置

    1. 编辑redis.windwos.conf文件

      ppendonly no(关闭aof) --> appendonly yes (开启aof)## appendfsync always : 每一次操作都进行持久化
      appendfsync everysec : 每隔一秒进行一次持久化
      ## appendfsync no	 : 不进行持久化
      
    2. 重新启动redis服务器,并指定配置文件名称

      >redis-server.exe redis.windows.conf
      

五、Jadis

1、Jadis概述

Jadis:java操作redis数据库的工具

2、下载使用

下载并导入jedis的jar包

//1. 获取连接
Jedis jedis = new Jedis("localhost",6379);
//2. 操作
jedis.set("username","zhangsan");
//3. 关闭连接
jedis.close();

3、操作redis

1)string
//1. 获取连接
Jedis jedis = new Jedis();//如果使用空参构造,默认值 "localhost",6379端口
//2. 操作
//存储
jedis.set("username","zhangsan");
//获取
String username = jedis.get("username");
System.out.println(username);//可以使用setex()方法存储可以指定过期时间的 key value
jedis.setex("activecode",20,"hehe");
//将activecode:hehe键值对存入redis,并且20秒后自动删除该键值对//3. 关闭连接
jedis.close();
2)hash
//1. 获取连接
Jedis jedis = new Jedis();//2. 操作
//2.1 存储hash
jedis.hset("user","name","lisi");
jedis.hset("user","age","23");
jedis.hset("user","gender","female");
//2.2 获取hash
String name = jedis.hget("user", "name");
System.out.println(name);
//2.3 获取hash的所有map中的数据
Map<String, String> user = jedis.hgetAll("user");//3. 关闭连接
jedis.close();
3)list
//1. 获取连接
Jedis jedis = new Jedis();//2. 操作
//2.1 list 存储
jedis.lpush("mylist","a","b","c");//从左边存
jedis.rpush("mylist","a","b","c");//从右边存
//2.2 list 范围获取
List<String> mylist = jedis.lrange("mylist", 0, -1);
//2.3 list 弹出
String element1 = jedis.lpop("mylist");//c
String element2 = jedis.rpop("mylist");//c
//2.4 list 范围获取
List<String> mylist2 = jedis.lrange("mylist", 0, -1);//3. 关闭连接
jedis.close();
4)set
//1. 获取连接
Jedis jedis = new Jedis();//2. 操作
//2.1 set 存储
jedis.sadd("myset","java","php","c++");
//2.2 set 获取
Set<String> myset = jedis.smembers("myset");//3. 关闭连接
jedis.close();
5)sortedset
//1. 获取连接
Jedis jedis = new Jedis();//2. 操作
//2.1 sortedset 存储
jedis.zadd("mysortedset",3,"亚瑟");
jedis.zadd("mysortedset",30,"后裔");
jedis.zadd("mysortedset",55,"孙悟空");
//2.2 sortedset 获取
Set<String> mysortedset = jedis.zrange("mysortedset", 0, -1);//3. 关闭连接
jedis.close();

4、jedis连接池

jedis连接池:JedisPool

//0.创建一个配置对象
JedisPoolConfig config = new JedisPoolConfig();
config.setMaxTotal(50);
config.setMaxIdle(10);//1.创建Jedis连接池对象
JedisPool jedisPool = new JedisPool(config,"localhost",6379);//2.获取连接
Jedis jedis = jedisPool.getResource();//3. 使用
jedis.set("hehe","heihei");//4. 关闭 归还到连接池中
jedis.close();

5、连接池工具类

public class JedisPoolUtils {private static JedisPool jedisPool;static{//读取配置文件InputStream is = JedisPoolUtils.class.getClassLoader().getResourceAsStream("jedis.properties");//创建Properties对象Properties pro = new Properties();//关联文件try {pro.load(is);} catch (IOException e) {e.printStackTrace();}//获取数据,设置到JedisPoolConfig中JedisPoolConfig config = new JedisPoolConfig();config.setMaxTotal(Integer.parseInt(pro.getProperty("maxTotal")));config.setMaxIdle(Integer.parseInt(pro.getProperty("maxIdle")));//初始化JedisPooljedisPool = new JedisPool(config,pro.getProperty("host"),Integer.parseInt(pro.getProperty("port")));}/*** 获取连接方法*/public static Jedis getJedis(){return jedisPool.getResource();}
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/617710.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

VUE 前端框架学习总结

Vue 的核心库只关注视图层&#xff0c;方便与第三方库或既有项目整合。 视图层即页面展示&#xff08;给用户看的部分&#xff09;&#xff0c;刷新后台给的数据&#xff1a;HTML CSS JS Vue 只负责视图层&#xff0c;其他前端部分有以下技术解决 网络通信 &#xff1a; axi…

探索WPF控件内容模型的四大支柱

WPF 内容模型 WPF控件内容模型主要指派生于System.Windows.Controls.Control类的各种控件&#xff0c;有四个可包含任意内容的类。 下表列出了继承自 Control 的类。 ContentControl&#xff1a;用于包含一段任意类型的内容。但是只能包含一个子元素作为其“内容”。它可以包…

arm服务器和麒麟v10安装nacos

在arm飞腾服务器和麒麟V10SP3上安装nacos 服务器和系统版本 ############## Kylin Linux Version ################# Release: Kylin Linux Advanced Server release V10 (Lance)Kernel: 4.19.90-52.22.v2207.ky10.aarch64Build: Kylin Linux Advanced Server release V10 (S…

图像分割deeplab系列

DeepLab系列是谷歌团队提出的一系列语义分割算法。DeepLab v1于2014年推出&#xff0c;并在PASCAL VOC2012数据集上取得了分割任务第二名的成绩&#xff0c;随后2017到2018年又相继推出了DeepLab v2&#xff0c;DeepLab v3以及DeepLab v3。DeepLab v1的两个创新点是空洞卷积&am…

【Python】新鲜出炉的海洋捕食者算法Python版本

2020年发表的海洋捕食者算法《Marine Predators Algorithm: A nature-inspired metaheuristic》。 作者只在原论文中给出了MATLAB代码&#xff0c;网上也没有Python版本&#xff0c;我自己用Python重写了MATLAB代码。 """2020海洋捕食者算法 """…

spaceship

通过数字平台启动您的网站、想法和未来&#xff0c;该平台旨在提供和连接您所需的域、托管、电子邮件和 Web 工具&#xff0c;并让您完全掌控 如果需要购买可以开5347的卡&#xff0c;点击获取

python 多线程 简介

python多线程简介 多线程的概念是相对单线程而言的。所谓单线程是指CPU在处理完成一项任务之前是不会开始处理第二件任务的。简单来说&#xff0c;单线程在执行任务时是有一定的顺序的。而随着科技的进步&#xff0c;CPU等计算机组件的升级换代日新月异&#xff0c;CPU处理速度…

小学信息科技Python课程第2课:坐标与画笔

一、turtle画布与坐标系 在同一平面互相垂直且有公共原点的两条数轴构成平面直角坐标系。在坐标系中&#xff0c;水平方向的轴都称为x轴&#xff0c;垂直方向的轴都称为y轴 它们相交于O点&#xff0c;在这一个点里&#xff0c;x轴的值为0&#xff0c;y轴的值也为0&#xff0c;所…

掌握 Vue 响应式系统,让数据驱动视图(下)

&#x1f90d; 前端开发工程师&#xff08;主业&#xff09;、技术博主&#xff08;副业&#xff09;、已过CET6 &#x1f368; 阿珊和她的猫_CSDN个人主页 &#x1f560; 牛客高级专题作者、在牛客打造高质量专栏《前端面试必备》 &#x1f35a; 蓝桥云课签约作者、已在蓝桥云…

SpringBoot全局配置Long转String丢失精度的问题解决

第一种方式 简单粗暴&#xff0c;将所有的Long类型&#xff0c;改为String&#xff0c;数据库改成varchar类型&#xff1b; 第二种方式 自己建个配置类 extends WebMvcConfigurerAdapter 已经被弃用&#xff0c;直接实现WebMvcConfigurer该接口就行了 EnableWebMvc Config…

什么是网络数据抓取?有什么好用的数据抓取工具?

一、什么是网络数据抓取 网络数据抓取&#xff08;Web Scraping&#xff09;是指采用技术手段从大量网页中提取结构化和非结构化信息&#xff0c;按照一定规则和筛选标准进行数据处理&#xff0c;并保存到结构化数据库中的过程。目前网络数据抓取采用的技术主要是对垂直搜索引…

DNS解析和它的三个实验

一、DNS介绍 DNS&#xff1a;domain name server 7层协议 名称解析协议 tcp /53 主从之间的同步 udp/53 名字解析 DNS作用&#xff1a;将域名转换成IP地址的协议 1.1DNS的两种实现方式 1.通过hosts文件&#xff08;优先级最高&#xff09; 分散的管理 linux /etc/hos…

深度生成模型(Deep Generative Models)

什么是机器学习 深度生成模型&#xff08;Deep Generative Models&#xff09;是一类利用深度学习方法生成新样本的模型。这些模型通常被用于生成与训练数据集相似的新数据&#xff0c;例如图像、文本或音频。深度生成模型的两个主要类型是生成对抗网络&#xff08;GANs&#…

QA面试题

1、质量保证(QA)是什么&#xff1f; QA代表质量保证。QA 是一组活动&#xff0c;旨在确保开发的软件满足 SRS 文档中提到的所有规范或要求。QA 遵循 PDCA 循环&#xff1a; 计划/Plan - 计划是质量保证的一个阶段&#xff0c;组织在此阶段确定构建高质量软件产品所需的过程。做…

日志审计系统Agent项目创建——读取日志文件(Linux版本)

紧接着上一篇的分享&#xff0c;继续做日志文件的读取&#xff0c;点击连接即可日志文件初始化https://blog.csdn.net/wjl990316fddwjl/article/details/135553238 1、将指针移动到文件末尾 //文件移动到结尾fseek(fp, 0, SEEK_END); 2、定义当前指针的位置 lastPosition ft…

搭建算法日志自检小系统

&#x1f952; 前言 目前演示的是一个工具&#xff0c;但如此&#xff0c;未来完成有潜力可以演变为一整套系统。 &#x1f451;现场人员自检失败表计点位教程V2.0 NOTE: 如果没有“logfiles-meter-tool“目录的请联系我们进行提供&#xff01; &#x1f447; 进入<dist>…

WEB 3D技术 three.js 阴影属性

上文 WEB 3D技术 three.js 光照与阴影 我们说了阴影 那么 我们继续将阴影的属性 目前 我们的代码 import ./style.css import * as THREE from "three"; import { OrbitControls } from "three/examples/jsm/controls/OrbitControls.js";//创建相机 cons…

【Git】的工作流程简介

目录 Git的工作区域Git的基本流程 1.将工作区的代码添加到暂存区2.将暂存区的文件提交到本地仓库3.将暂存区的文件提交到远程仓库 Git的工作区域 Git的基本流程 图形化方式操作 命令行模式&#xff08;Linux系统常用&#xff09;操作 1.将工作区的代码添加到暂存区 查看文件状…

蓝桥杯基础知识4 swap()、reverse()

蓝桥杯基础知识4 swap()、reverse() #include <bits/stdc.h> using namespace std;int main(){int a 10,b 20;cout << a << << b <<\n; //10 20swap(a,b);cout << a << << b <<\n; //20 10return 0; } C 在线工具 |…

CES 2024上的AI亮点

以下是CES 2024前两天AI方面亮点&#xff1a; 一个AI助手&#xff0c;取代你的智能手机应用程序的rabbit.tech人工智能驱动的捆绑式鞋子被称为“Moonwalkers”&#xff0c;可以让你走得更快 FitXR Slam的VR和健身创新WeHead的人工智能能给ChatGPT一张脸世界上第一个高清触觉游…