redis非关系型数据库部署和使用(linux)

news2024/11/13 9:30:58

1.概念

        NoSQL非关系型数据库是一种不使用关系模型来组织数据的数据库,通常用于存储非结构化或半结构化的数据,不支持或只部分支持SQL语言,满足最终一致性。非关系型数据库有多种类型,例如键值数据库、文档数据库、列式数据库、图形数据库、时序数据库等。非关系型数据库的优点灵活性高、性能高、可扩展性强,适合处理海量数据和复杂数据类型。非关系型数据库的缺点是不提供事务支持,无法保证数据的完整性和安全性,功能不如关系型数据库完善。

        Redis是一种非关系型数据库,属于键值数据库的一种,它使用键值对的方式存储数据,支持多种类型的值,如字符串、哈希、列表、集合、有序集合等。Redis的特点有:

        高性能:Redis是基于内存的数据库,读写速度非常快,可以达到每秒10万次的读写性能。
        持久化:Redis支持两种持久化方式,一种是快照(snapshotting),将内存中的数据定时保存到磁盘上;另一种是只追加文件(append-only file),将每次对数据库的写操作记录到文件中。
        分布式:Redis支持主从复制(master-slave replication),可以实现数据的备份和负载均衡
        丰富的功能:Redis除了提供基本的增删改查操作,还提供了事务、发布订阅、Lua脚本、管道等高级功能。
        简单易用:Redis使用C语言编写,代码简洁,安装和使用都非常方便。

2.redis安装(ubuntu)

1.下载工具及安装

                中文网站:http://redis.cn

                官方网站:http://redis.io

              把下载好的包上传到linux服务器上,如下图使用命令进行解压 安装

命令如下

解压命令
tar zxvf redis-4.0.8.tar.gz
进入到解压后目录,执行下面命令
make
sudo make install

使用命令测试是否安装成功

启动redis
redis-server
打开一个新终端,使用客户端连接
redis-cli           #默认连接本地主机,绑定6379端口
redis-cli -p 端口号    #指定端口连接本地
redis-cli -h IP地址 -p 端口号    #连接远程主机
通过客户端关闭服务器
shutdown
客户端的测试命令
ping

 如下图

2.redis使用命令

        1.字符串类型使用命令

字符串类型都是以
key->string
value->string
的形式

命令1
set key value   #表示创建一个键值对,键值为key,值为value,如果已经存在则会被覆盖
命令2
keys *    #表示查看所有的键值
命令3
get key    #获取到指定键值的值
命令4
mset [key value]    #表示一次创建多个键值对,例:get h1 world1 h2 world2
命令5
mget [key]    #一次获取到多个指定键值的值
命令6
append key value    #在指定键值后追加字符,如果指定键值不存在则会创建该键值
命令7
strlen key    #查看指定键值的值的长度
命令8
decr key    #只可以使用到数字字符,指定的键值减1
命令9
incr key    #只可以使用到数字字符,指定的键值加1
命令10
decrby key 数字n    #只可以使用到数字字符,指定的键值的值减n
命令11
incrby key 数字n    #只可以使用到数字字符,指定的键值的值加n

以下是操作例子

         2.list(列表)类型使用命令

列表类型以
key->string
value->list
形式

命令1
lpush key [value]    #创建一条数据,将一个或多个值插入到列表key的表头
rpush key [value]    #创建一条数据,将一个或多个值插入到列表key的表尾
命令2
lrange key start stop    #遍历列表
    key:遍历的列表名称
    start:遍历的起始位置
    stop:遍历的结束位置
命令3
lpop key    #删除列表为key的表头元素
rpop key    #删除列表为key的表尾元素
命令4
lindex key index    #通过下表获取对应的值
    key:要获取的列表名称
    index:下标值
命令5
llen key    #查看指定列表的长度
命令6
lrem key count value    #根据参数 count 的值,移除列表中与参数 value 相等的元素。
    count 的值可以是以下几种 :
        count > 0: 从表头开始向表尾搜索,移除与 value 相等的元素,数量为 count 。
        count < 0: 从表尾开始向表头搜索,移除与 value 相等的元素,数量为 count 的绝对值
        count = 0 :移除表中所有与 value 相等的值

以下是操作例子

        3.set(集合)类型命令

set类型以
key->string
value->set类型(string,string...)
形式存储

命令1
sadd key [member]    #创建一个名称为key的集合,member为插入的值,插入到头部,不会有重复数据
命令2
smembers key    #遍历集合
命令3
sdiff key1 key2    #求两个集合的差集
命令4
sinter key1 key2    #求两个集合的交集
命令5
sunion key1 key2    #求两个集合的并集
命令6
sdiffstore key key1 key2    #求key1和key2的集合的差集,并且把差集存放到key集合中
命令7
sinterstore key key1 key2    #和命令6一样,该命令求交集
命令8
sunionstore key key1 key2    #和命令6一样,该命令求并集
命令9
spop key    #随机删除集合key中的一个元素
命令10
srem key [member]    #删除集合key中指定的元素member

以下是操作例子

         4.SortedSet(有序集类型)命令

有序集以
key->string
value->sorted[score,member]
的形式存储

命令1
zadd key [score,member]    #创建一个有序集,插入一个或多个值到有序集key中
命令2
zrange key start stop [withscores]    #遍历有序集key,按升序输出
zrevrange key start stop [withscores]    #遍历有序集key,按降序输出
    start:遍历的开始位置
    stop:遍历的结束位置
命令3
zcount key min max    #计算有序集key中,score值在min到max之间的个数
命令4
zrank key member    #返回有序集key中成员member的排名,按成员score值递增排序
zrevrank key member    #返回有序集key中成员member的排名,按成员score值递减排序
命令5
zrem key [member]    #移除一个或多个元素
命令6
zscore key member    #返回有序集key中成员member的score值

           5.hsa(哈希)类型命令

hash类型以
key->string
value->hash[field:value,field:value]
的形式存储

命令1
hset key field value    #创建一个名为key的哈希表,并插入键值对field:value
命令2
hget key field    #取出哈希表key中键为field的值
命令3
hmset key [field value]    #可以同时插入多个键值对
命令4
hmget key [field]    #可以同时获取多个值
命令5
hdel key [field]    #删除哈希表中键值为field的值
命令6
hgetall key    #输出哈希表的键和值
命令7
hkeys key    #输出键
命令8
hvals key    #输出值

 以下是操作例子

        6.key操作

命令1
del [key]    #删除名称为key的键值对
命令2
keys * ? []    #匹配key值
    *:匹配一串字符
    ?:匹配一个字符
    []:匹配指定字符
命令3
expire key seconds    #设置名称为key的键值存活实际,seconds表示秒
命令4
ttl key    #查看存活时间,-1表示没有设置存活时间,-2表示不存在
命令5
persist key    #移除给定key的生成时间
命令6
type key    #返回key对应的value类型

3.redis配置文件

        文件redis.conf在上面解压包的目录下,如我的包是 redis-4.0.8.tar.gz ,就需要进入 redis-4.0.8的目录找,

一些配置文件的内容含义

1. bind 127.0.0.1    #绑定的ip地址,只有绑定的ip地址才可以访问到,注释默认所有ip地址都可访问
2. protected-mode yes    #包含模式,要远程连接需要关闭,yes表示开启,no表示关闭
3. port 6379    #使用的端口号,默认6378
4.timeout 0    #超时时间,0表示不启用,>0表示启用
5.daemonize no    #守护进程,no表示不是守护进程,yes表示是守护进程
6.pidfile /var/run/redis-b379.pid    #如果不是守护进程不生效,如果是会生成一个pid文件,可以修改目录,./ -> 表示在redis启动的目录下
7.loglevel notice    #日志级别
8.logfile    ""    #日志文件,要是守护进程才生效,这样表示不输出,


配置好文件后使用一下命令启动以及连接
启动:redis-server redis.conf
连接:redis-cli -p 端口号

4.redis数据持久化

方式生成文件存储方式优点缺点
rdb方式生成 .rdb文件,默认打开会将内存中的数据以二进制的形式写入到磁盘文件文件比较小,恢复时间端,效率高以用户设定的频率去同步数据,容易丢失数据,数据完整性较低
aof方式生成 .aof 文件会把生成数据的命令写入到磁盘文件每隔1秒钟进行一次数据同步,数据完整性高文件较大,恢复时间床,效率低

        一些配置文件内容,也是在 redis.conf 文件中

1.rdb的刷新频率,任何一个满足都会刷新
save 900 1
save 300 10
save 60 10000

2.dbfilename dump.rdb    #rdb文件的名字
3.dir ./    #生成的持久化文件保存的目录,rdb和aof
4.appendonly no    #是否要打开aof模式,yes表示是,no表示否
5.appendfilename "appendonly.aof"    #设置aof文件的名字

        一些问题

                1.aof和rdb能不能同时打开

                        可以

                2.aof和rdb能不能同时关闭

                        可以

                        关闭rdb方式:save ""

                3.两种模式同时开启,如果进行数据恢复,如何选择

                        效率上考虑:rdb模式

                        数据的完整性考虑:aof模式

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

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

相关文章

Shopee、Grab、Gojek 打造超级app已成为主流

超级App的概念在全球范围内逐渐被接受和采用。 超级App是指一种综合性的应用程序&#xff0c;允许用户在同一个平台上访问多个不同的服务&#xff0c;包括支付、社交媒体、出行、点餐等等。它的发源地是东南亚地区&#xff0c;如中国的微信、印度的Paytm和印尼的Gojek等应用&a…

Spring入门案例--bean的生命周期

bean的生命周期 关于bean的相关知识还有最后一个是bean的生命周期,对于生命周期&#xff0c;我们主要围绕着bean生命周期控 制 来讲解: 首先理解下什么是生命周期? 从创建到消亡的完整过程,例如人从出生到死亡的整个过程就是一个生命周期。 bean生命周期是什么? bean对…

C++ | 说说类中的static成员

【概念】&#xff1a;声明为static的类成员称为类的静态成员&#xff0c;用static修饰的成员变量&#xff0c;称之为静态成员变量&#xff1b;用static修饰的成员函数&#xff0c;称之为静态成员函数。静态成员变量一定要在类外进行初始化 文章目录 一、面试题引入二、static特…

5个实用的JavaScript原生API

本文带来5个难得一见的JavaScript原生API&#xff0c;为我们的前端开发带来意想不到的便利。 1. getBoundingClientRect() Element.getBoundingClientRect() 方法返回一个 DOMRect 对象&#xff0c;该对象提供有关元素大小及其相对于视口的位置的信息。 domRect element.ge…

Java笔记_11(常用API)

Java笔记_11 一、常用的API1.1、MathMath练习 1.2、System1.3、Runtime1.4、Object1.5、浅克隆、深克隆1.6、对象工具类的Objects1.7、BigInteger&#xff08;大整数&#xff09;1.8、BigDecimal&#xff08;大小数&#xff09; 二、正则表达式2.1、正则表达式基础知识2.2、正则…

关于WordPress的20个有趣事实

时值 2022 年&#xff0c;互联网格局和 WordPress 的流行发生了重大变化。COVID-19 流行几乎影响到人类生存的方方面面&#xff0c;包括我们的互联网习惯&#xff0c;这也不例外。 到 2022 年&#xff0c;我们在家工作的人数显着增加&#xff0c;下岗或发现自己有更多空闲时间…

Python基础实战3-Pycharm安装简介

Pycharm下载、安装与使用 1.打开pycharm官网&#xff1a;下载 PyCharm&#xff1a; Python IDE for Professional Developers by JetBrains 2.选择自己对应的操作系统&#xff0c;点击Download&#xff0c;默认是最新版本&#xff0c;想安装其他版本可以选择Other versions下载…

【iOS】—— Masonry源码学习(浅看,未完)

Masonry 文章目录 MasonryNSLayoutConstraint用法Masonry源码 Masonry在我们之前的学习中是一个非常有用的第三方库。 Masonry是一种基于Objective-C语言的轻量级布局框架&#xff0c;它可以简化iOS应用程序中的自动布局任务。Masonry提供了一个方便的API&#xff0c;可以编写更…

Kubernetes Service、Ingress

Service&#xff08;4层负载均衡器&#xff09; 1、K8S 可以保证任意 Pod 挂掉时自动从任意节点启动一个新的Pod进行代替&#xff0c;以及某个Pod超负载时动态对Pod进行扩容。每当 Pod 发生变化时其 IP地址也会发生变化&#xff0c;且Pod只有在K8S集群内部才可以被访问&#xf…

Flink高手之路4-Flink流批一体

文章目录 Flink高手之路4-Flink流批一体API开发一、流批一体相关的概念1.数据的时效性2.流处理和批处理1)批处理2)流处理3)两者对比 3.流批一体API4.流批一体的编程模型 二、Data Source1.预定义的Source1)基于集合的Sources(1)API(2)演示 2)基于文件的Source(1)API(2)演示 3)基…

2023.4.19 + 4.20

文章目录 String类1&#xff1a;介绍&#xff1a;2&#xff1a;String类实现了很多的接口&#xff1a;3&#xff1b;String类常用构造器4&#xff1a;不同方式创建String类对象的区别&#xff08;1&#xff09;直接赋值的方式&#xff08;2&#xff09;常规new的方式&#xff0…

【筛质数】——朴素筛,埃式筛,欧拉筛

题目描述&#xff1a; 题目分析&#xff1a; 这道题可以用&#xff0c;朴素筛&#xff0c;埃氏筛&#xff0c;欧拉筛来写。 普通筛&#xff1a; 时间复杂度&#xff1a;O(n logn) 时间复杂度太高&#xff0c;会超时的&#xff01;&#xff01;&#xff08;9/10&#xff09; #…

Keil5----显示空白符和设置使用空白格表示Tab键

一、Keil5界面----显示空白符 首先打开Keil5-MDK界面&#xff0c;然后按照下面步骤操作。 步骤1&#xff1a;点击 Edit(编辑)&#xff0c;然后点击 Configuration(配置) 步骤2&#xff1a;勾选 View White Spaces(查看空白) 步骤3&#xff1a;显示设置后的结果 具体显示结果分…

Git添加SSH密钥本地仓库上传远程GitHub库

1、前言 现在想要从本地设备将本地仓库上传到GitHub上需要用到SSH密钥&#xff0c;接下来讲解大致的步骤&#xff0c;本文默认读者已经掌握基本的Git知识 2、详细步骤 2.1 创建密钥 在本地项目仓库根目录下&#xff0c;输入下面的命令&#xff1a; ssh-keygen -t rsa命令输…

深度学习 Day 31——YOLOv5-Backbone模块实现

深度学习 Day 31——YOLOv5-Backbone模块实现 文章目录 深度学习 Day 31——YOLOv5-Backbone模块实现一、前言二、我的环境三、什么是YOLOv5-Backbone模块&#xff1f;四、搭建包含Backbone模块的模型1、模型整体代码2、模型每一部分详解3、模型详情 五、模型训练六、最终结果1…

计算机|网页设计 |七大罪动漫主题|作品分享

文章目录 一、主题介绍二、截图展示三、源代码获取 一、主题介绍 计算机&#xff5c;网页设计 &#xff5c;七大罪动漫主题&#xff5c;作品分享 一个关于七大罪动漫主题的网页设计。共4页 图片文字都可修改&#xff01; 二、截图展示 三、源代码获取 本次的分享就到这里啦&…

双指针【算法推导、背模板】——最长连续不重复子序列

799. 最长连续不重复子序列 - AcWing题库 通常情况双指针就是需要将O(N^2^)&#xff0c;利用某些单调性质实现O(N) 通用代码模板 for(int i 0 , j 0; i < n ; i ){while(j < i && check(i , j ) ) j ;// 需要处理的逻辑 }check判断是否构成 算法推导 题目中…

LLM总结(持续更新中)

引言 当前LLM模型火出天际&#xff0c;但是做事还是需要脚踏实地。此文只是日常学习LLM&#xff0c;顺手整理所得。本篇博文更多侧重对话、问答类LLM上&#xff0c;其他方向&#xff08;代码生成&#xff09;这里暂不涉及&#xff0c;可以去看综述来了解。 之前LLM模型梳理 …

微服务---RabbitMQ与SpringAMQP基本使用

RabbitMQ 1.初识MQ 1.1.同步和异步通讯 微服务间通讯有同步和异步两种方式&#xff1a; 同步通讯&#xff1a;就像打电话&#xff0c;需要实时响应。 异步通讯&#xff1a;就像发邮件&#xff0c;不需要马上回复。 两种方式各有优劣&#xff0c;打电话可以立即得到响应&am…

OpenCV实例(四)手写数字识别

OpenCV实例&#xff08;四&#xff09;手写数字识别 1.基本原理2.实现步骤2.1数据准备2.2计算匹配值2.3获取最佳匹配值及对应模板2.4获取最佳匹配模板对应的数字2.5输出识别结果 3.代码实例 作者&#xff1a;Xiou 1.基本原理 使用模板匹配的方式实现手写数字识别&#xff0c;…