Redis 安装和数据类型

news2024/12/23 13:34:20

Redis 安装和数据类型

一、Redis

1、Redis概念

redis 缓存中间件:缓存数据库

nginx web服务

php 转发动态请求

tomcat web页面,也可以转发动态请求

springboot 自带tomcat

数据库不支持高并发,一旦访问量激增,数据库很快就会崩溃

redis的作用:缓存数据库

在这里插入图片描述

redis也是一个数据库,不单是一个缓存工具,

redis非关系型数据库,nosql=not only sql 不仅仅是sql

键值对形式

key value

test1=test2

test1=10 数据的类型不是定义好的类型,根据自定义,系统自动识别

test1=10 string

2、Redis简介

redis:远程字典服务器

键值对、开源的、C语言写的nosql数据库

redis基于内存运行,所有的数据不是保存在硬盘,而是内存

持久化————定期或者人为的把数据保存到硬盘

3、Redis的优点

1、极高的读写速度,读速度可以达到110000次/s,81000次/s

2、支持丰富的数据类型,键值对可以定义多种数据类型 string、list、hash、set

3、支持数据持久化,内存当中数据保存到磁盘

4、原子性,redis的所有操作都是原子性的

5、支持主从模式和高可用模式(哨兵模式),以及集群

缓存雪崩、缓存击穿???

4、应用场景

redis基于内存运行的数据库,缓存是他最常用的应用场景

排行榜、计数器、存储关系、实时分析记录、日志系统

6、Redis缓存

缓存是一种用于存储临时数据副本的技术,目的就是提高访问速度和性能

缓存通常位于数据的访问路径上,数据的必经之路,可以不直接访问原始数据的情况下,可以直接获取数据

缓存的应用场景:

web缓存、数据库缓存、对象缓存(大数据应用)

二、Redis安装部署

安装部署redis

systemctl stop firewalld
setenforce 0
cd /opt # 把包拖进来

安装redis的依赖环境
yum install -y gcc-c++ make

tar -xf redis-5.0.7.tar.gz
cd redis-5.0.7
make -j 4

make PREFIX=/usr/local/redis install

cd utils
./install_server.sh
# 默认端口6379
# 注意默认6379后的Please select the redis executable path [] 
/usr/local/redis/bin/redis-server
# Is this ok? Then press ENTER to go on or Ctrl-C to abort. 
按回车  # Installation successful! 表示成功

ln -s /usr/localredis/bin/* /usr/local/bin
netstat -antp | grep 6379

vim /etc/redis/6379.conf
set nu
70行   bind后增加 本机地址192.168.100.11
93行   默认不动(port 6379)
137行  默认不动(daemonize yes)
159行  默认不动(pidfile /var/run/redis_6379.pid)
172行  默认不动(logfile /var/log/redis_6379.log)
wq!

/etc/init.d/redis_6379 restart
/etc/init.d/redis_6379 stop
/etc/init.d/redis_6379 status

tail -f /var/log/redis_6379.log

# 进入redis的命令
redis-cli -h 192.168.100.11 -p 6379 

三、Redis数据库

# 进入redis的命令
redis-cli -h 192.168.100.11 -p 6379 
-h 指定ip地址
-p 指定端口
-a 密码(没有密码可以不加)
redis-cli 命令行工具
redis-server start stop restart 控制redis的服务状态
redis-benchmark 检查redis的运行效率
redis-check-aof 修复aof持久化的文件
redis-check-rdb 修复rdb持久化的文件

redis-benchmark -h 192.168.100.11 -p 6379 -c 100 -n 10000
# 向redis的主机模拟发送100个并发链接,同时发送十万个请求

redis-benchmark -h 192.168.100.11 -p 6379 -q -d 100
# 模拟存储100个数据包的性能测试

1、Redis数据类型

命令类型
string字符串
list列表
hash散列,键值对集合
set集合 不重复的无序集合
zset集合 有序集合

2、Redis的常用命令

redis-cli -h 192.168.100.11 -p 6379

# 创建键值对   
set 键名 数值  

# 获取键值对的数值     
get 健名        

# 查看当前数据库有多少键值对
keys *

# 查看库当中键值对是否存在
exists 键名
# 存在返回1,不存在返回0

# 查看键值的类型
type 键名

# 如何删除键值对
del 键名 
# 返回1删除1个 返回2删除2个 可以同时删除多个

# 修改键的名字
rename 旧名 新名

# 如何给redis添加密码
config set requirepass 123456
# 添加密码

auth 123456
# 密码登录

config get requirepass
auth 123456

3、Redis数据类型操作

3.1 string类型

是redis的基础类型,最大能够存储512MB的数据(数字、图片等待默认都是string)

append 
# 追加
如何该键不存在,自动添加打印键值长度,该键存在,对已有键进行追加,并显示长度

strlen 名字  # 获取值的长度

incr 名字   # 值追加1

decr 名字   # 值减少1

incrby 名字 数值  # 指定加多少

decrby 名字 数值 数值 # 指定减多少

# 增加生命周期  
setex 名 时间()# 查看生命周期
ttl 名

# 查看库里面的键值对有几个
dbsize

# 查看Redis有多少个库
config get databases 
# 第一个库是零,每一个库都是独立的,互相不影响

# 换库
select 序列号 

# 数据迁移(移库)
move 名 序列号

# 清空库 和  # 清空所有的库  !!!慎用!!!
flushdb 和  flushall

# 如何一次创建多个键值对
mset 键名1 数值 键名2 数值 键名3 数值

#一次性查看多个键值对  mget
mget 键名1 键名2 键名3 键名4

3.2 list类型

列表类型

# 创建list类型
lpush 名 值
lpush mykey a b c d

# 查看数值
lrange 名 0 -1 
# 0是起始位。-1是列表当中的最后一位  #显示从右往左

lrange 名 0 2
# 起始位向后移两位  # 数字表示索引,即代表索引位置

# 怎么在列表里面添加元素
lpush 键名 数值

# 移除数据
lpop 名   # 从右往左移除数据

# 查看键名有多少个元素
llen 名

# 指定删除
lrem 名 数字 数值  # 数字表示要删除几个

# 如何用索引的方式打印指定的位置(数字表示位置、从右往左)
lindex 名 数字 

# 根据索引的位置对指定位置进行替换
lset 名 数字 数值
# 把数字的位置的数值替换成数值

# 怎么在指定值的前后进行替换
linsert 名 before 数值1 数值2
# 在数值1的前面插入数值2

linsert 名 after 数值1 数值2
# 在数值1的后面插入数值2

# 创建数值对   从左往右
rpush 名 数值
lpush mykey a b c d

# 移除从右往左
rpop 名

3.3 hash类型

hash类型:散列,用来存储对象,把对象类别和ID构成键名

hash类型存储的空间很小,占用的内存和持久化后磁盘空间都很少

hash是一个键值对,包含多个对象个对象的值

myhash就是一个hash值,一个hash值可以存储4294967295个键对值

# 创建hash类型的键
hset 名 对象名 数值
hset myhash id1 1 id2 2 id3 3

# 获取id值
hget myhash id

# 查看hash的键对值有几个
hlen myhash

# 删除  #只能一个一个删,键名后面必须要加对象
hdel myhash id

# 创建多个
hmset myhash id1 1 id2 1

# 获取多个值
hmget mhash id1 id2

# 查看所有键值对和里面数值
hgetall myhash

# 只看键对名
hkeys myhash

# 只看键值对里面的数值
hvals myhash

# 添加键值对和数值  
hsetnx myhash id4 4

3.4 set类型

set集合:无序集合,元素的类型只能是string,在无序集合当中,元素具有唯一性,不允许重复

应用场景:可以用set的数据来追踪唯一性的数据,比如:IP地址。或者根据客户的ip区分不同客户购买的同一产品

# 创建键值对
sadd myset a b b c

# 查看
smembers myset

# 添加  # 表中存在的不添加,实际添加数会显示
sadd myset a d e

# 查看集合当中的元素有几个
scard myset

# 从当前集合随机获取一个值
srandmember myset

# 随机删除集合当中任意值
spop myset

# 删除指定值
srem myset a

srem myset b c

# 把myset当中的a移动到myset2当中
smove myset myset2 a

3.5 zset类型

zset集合:有序集合,sorted set,元素类型都是string,元素唯一,不能重复,每个元素都会关联一个double类型的分数score(表示权重),通过权重的大小进行排序,权重可以相同

# 创建
zadd myzet 1 "one"
zadd myzet 2 "two" 3 "three"

# 查看成员   # one two three
zrange myzet 0 -1

# 查看成员,按照权重大小进行排序   # 权重 1 2 3
zrange myzet 0 -1 withscores

# 权重值可以相同,但是成员不可以相同

# 获取权重的范围是大于等于2小于等于5   # 展示结果是成员
zrangebyscore myzet 2 5

# 排序  # 索引倒序
zrevrange myzet 1 3

3.6 数据类型总结

string 基本类型

list 列表

hash 一个hash可以存储多个对象和对象值,对象名不可重复

set 无序集合 没有重复 没有权限 string

ash

创建

zadd myzet 1 “one”
zadd myzet 2 “two” 3 “three”

查看成员 # one two three

zrange myzet 0 -1

查看成员,按照权重大小进行排序 # 权重 1 2 3

zrange myzet 0 -1 withscores

权重值可以相同,但是成员不可以相同

获取权重的范围是大于等于2小于等于5 # 展示结果是成员

zrangebyscore myzet 2 5

排序 # 索引倒序

zrevrange myzet 1 3


### 3.6 数据类型总结

string  基本类型

list 列表

hash 一个hash可以存储多个对象和对象值,对象名不可重复

set 无序集合 没有重复 没有权限 string

zset 有序集合 没有重复 按照权重进行排序 string

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

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

相关文章

网工内推 | 合资公司、上市公司数据库工程师,OCP/OCM认证优先,双休

01 欣旺达电子股份有限公司 🔷招聘岗位:数据库管理高级工程师 🔷岗位职责: 1、负责数据库规划、管理、调优工作; 2、负责数据库应急预案制定、应急预案维护和应急支持; 3、负责数据库异常处理&#xff…

Unity UGUI 之 事件触发器

本文仅作学习笔记与交流,不作任何商业用途 本文包括但不限于unity官方手册,唐老狮,麦扣教程知识,引用会标记,如有不足还请斧正 本文在发布时间选用unity 2022.3.8稳定版本,请注意分别 1.什么是UI事件触发器…

linux安装jdk和jps(为rocketMq准备)

20240730 一、安装rocketMq之前的准备工作1. 安装jkd(这里以1.8为例子)1.1 下载jdk1.81.2 上传到linux(拖拽)1.3 解压1.4 配置环境变量1.5 使配置文件生效1.6 验证结果 2. JPS2.1 解决 一、安装rocketMq之前的准备工作 1. 安装jk…

angular入门基础教程(十)管道即过滤器

管道 何为管道,ng 翻译的真烂,但是听多了你就理解了,类似于 vue2 中的过滤器,过滤器在 vue3 中已经废弃 从common包里面引入,并注册 import { Component, inject } from "angular/core"; import { UpperC…

C# 调用Webservice接口接受数据测试

1.http://t.csdnimg.cn/96m2g 此链接提供测试代码; 2.http://t.csdnimg.cn/64iCC 此链接提供测试接口; 关于Webservice的基础部分不做赘述,下面贴上我的测试代码(属于动态调用Webservice): 1&#xff…

Appium自动化测试 ------ 常见模拟操作!

Appium自动化测试中的常见模拟操作涵盖了多种用户交互行为,这些操作对于自动化测试框架来说至关重要,因为它们能够模拟真实用户的使用场景,从而验证应用程序的功能和稳定性。 以下是一些Appium自动化测试中常见的模拟操作: 基本操…

XPathParser类

XPathParser类是mybatis对 javax.xml.xpath.XPath的包装类。 接下来我们来看下XPathParser类的结构 1、属性 // 存放读取到的整个XML文档private final Document document;// 是否开启验证private boolean validation;// 自定义的DTD约束文件实体解析器,与valida…

JavaSE面向对象进阶

static 介绍 static表示静态,是Java中的一个修饰符可以修饰成员方法、成员变量 被static修饰的成员变量,叫做静态变量被static修饰的成员方法,叫做静态方法 静态变量 特点:被该类所有对象共享 调用方式: 类名调用&am…

关于@Async

Spring Boot 2.x 开始,默认情况下,Spring AOP 使用 CGLIB 代理 Async不能在同一个类中直接调用 关于在控制器不能使用Async 并不是因为SpringBoot2以前使用JDK代理 因为JDK代理需要类实现接口,控制器没有实现接口等原因 真正原因是 Async 不能…

windows@powershell@任务计划@自动任务计划@taskschd.msc.md

文章目录 使用任务计划windows中的任务计划任务计划命令行程序开发windows 应用中相关api传统图形界面FAQ schtasks 命令常见用法创建计划任务删除计划任务查询计划任务修改计划任务运行计划任务 PowerShell ScheduledTasks常用 cmdlet 简介1. Get-ScheduledTask2. Register-Sc…

手动在ubuntu上搭建一个nginx,并安装证书的最简化完整过程

背景:由于想做个测试:即IP为A的服务器,绑定完域名X后,如果再绑定域名Y,能不能被访问到。(假设对A不做绑定域名的设置) 这个问题的来源,见上一篇文章:《云服务器被非法域名…

kaggle使用api下载数据集

背景 kaggle通过api并配置代理下载数据集datasets 步骤 获取api key 登录kaggle,点个人资料,获取到自己的api key 创建好的key会自动下载 将key放至家目录下的kaggle.json文件中 我这里是windows的administrator用户。 装包 我用了虚拟环境 pip …

021.自定义指纹浏览器编译-修改ClientRects指纹

一、什么是ClientRects指纹 ClientRects指纹获取的核心方法是DOM元素方法getClientRects()​ 。getClientRects()​ 可以返回一个元素的所有 CSS 边界框(ClientRect对象数组),包括其大小、位置等信息。每个边界框由其左上角的 x, y 坐标和宽…

基于YOLOv10深度学习的商品条形码智能检测与识别系统【python源码+Pyqt5界面+数据集+训练代码】深度学习实战、目标检测

《博主简介》 小伙伴们好,我是阿旭。专注于人工智能、AIGC、python、计算机视觉相关分享研究。 ✌更多学习资源,可关注公-仲-hao:【阿旭算法与机器学习】,共同学习交流~ 👍感谢小伙伴们点赞、关注! 《------往期经典推…

小程序、H5、APP中的微信支付概述和实战总结

最近开发的一个微信小程序的项目结束了,里面用到了支付相关的api,借着项目总结一下小程序各种场景支付的逻辑。 1. 微信支付概述 1.1 微信支付的重要性 微信支付作为中国领先的移动支付方式之一,其便捷性、安全性以及广泛的用户基础使其成为…

已解决丨怎么快速的让IP地址实现HTTPS访问?

要快速让IP地址实现HTTPS访问,可以遵循以下简洁步骤: 1. 确认公网IP地址 确保你拥有一个固定的公网IP地址,因为HTTPS访问需要通过互联网上的公网IP进行。 2. 选择证书颁发机构(CA) 选择一个受信任的证书颁发机构&a…

从PLC到云端,ZP3000系列网关助力工业数字化转型

ZP3000系列远程控制网关是一款专为满足现代工业自动化和远程监控需求而设计且功能强大的通讯模块。它的多接口设计和灵活配置能力,使得它能够适应多种复杂的工业通信和监控场景。以下是关于ZP3000系列远程控制网关的详细特点和应用场景: 产品特点 双以太…

playwright 模拟F11 全屏

直接上源代码 import multiprocessing import time from multiprocessing import Processfrom playwright.sync_api import sync_playwrightdef run(playwright):# 使用 Chromium 浏览器运行 设置 headlessFalse 以打开可视化窗口browser playwright.chromium.launch(headles…

C语言——设计TVM(地铁自动售票机)机软件。

输入站数,计算费用,计费规则,6站2元,7-10站3元,11站以上为4元。 输入钱数,计算找零(找零时优先找回面额大的钞票),找零方式为各种面额张数,可识别面额: 100,50,20,10,5,1…

linux中mysql的安装使用(普通版版本+docker版本)

linux中mysql的安装使用 一、普通安装1.下载安装包2.流程 二、用docker安装1.拉取mysql镜像2.启动镜像3.开启权限第一种情况第二种情况 三、用Navicat连接 一、普通安装 1.下载安装包 挑选个你喜欢的目录,用wget下载并且解压 wget http://dev.mysql.com/get/Down…