redis基础学习

redis是一个键值对类型的NoSql类型的数据库。

NoSql(Non-relational SQL的缩写,也有人看作是not only sql的缩写)型数据库,具有以下特征:

 1、非结构化:几乎没有约束,约束很少,这要看是什么数据库,没有对字段的像primary key、not null等等的约束。

 2、无关联的:没有表与表之间的外键关系,采用json格式存储,数据库本身不会维护表与表之间表与表之间的关系,需要程序员自己来完成。

 3、非sql:不同数据库操作数据采用的不同的语法格式,不像sql型数据库公用一套操纵数据库的语法。

 4、不满足ACID(原子性,持久性,隔离性,一致性)

 5、数据存储在内存中(sql的存储在磁盘中)

 6、数据不安全,性能高。

NoSql类型数据有4种:1、键值对类型,代表:redis;2、文档类型,代表:MongoDB;3、列类型,代表:HBase;4、Graph类型,代表:Neo4j

下面让我们来简单了解一下redis

redis,全称:Remote Dictionary Server,远程词典服务器,是一个基于内存的键值型数据库。

 特征:

 键值型:key一般是String类型,value支持多种不同数据结构,比如String,hash,set,list等等。

 单线程:每个命令具备原子性(redis6.0后的版本所具备的多线程说的是对网络请求可以有多个线程)。

 低延迟,速度快:基于内存、IO多路复用、良好的编码。只要是因为存储在内存中。

 支持数据持久化

 支持主从集群、分片集群

 支持多语言客户端

redis的下载需要在Lunix系统中下载。我的电脑为macOS

下载完后,我们可以通过修改redis.conf配置文件来修改一下配置。该配置文件的目录为usr/local/etc/   然后打开其中的redis.conf文件。下面是几个基础配置

 bind 0.0.0.0 配置 ,用于配置访问redis的IP地址,默认是127.0.0.1  。配置0.0.0.0就是所以IP都可以访问,如果redis中存储了重要信息,就不要设置成0.0.0.0 

 port 6379,配置redis的端口号,默认是6379

 daemonize yes  ,配置的redis的守护进程,配置为yes就可后台运行

 logfile "redis.log"  ,配置redis运行日志的存储位置,字符串中的就是日志文件的路径,默认为空,即不存储日志。如果像我这样不写路径,只写个文件名,就是默认在运行redis的当前目录创建该日志文件进行存储。

 databases 16 ,配置redis中数据库的数量,redis中数据库的数量是指定的(当然,可以随时在配置文件中修改),不像mysql数据库,可以直接创建任意数量的database。默认为16,编号为0~15。

 requirepass xxxxx ,配置登陆redis的密码

启动redis命令 redis-server  ,默认IP为127.0.0.1,端口号为6379;也可以指定IP和端口号    redis-server -h IP地址 -p 端口号 -a 密码。

也可以基于配置文件进行启动,前面说过redis.conf配置文件在usr/local/etc目录中,首先进入该目录,在该目录运行该命令:redis-server redis.conf

要能实现数据库的CRUD(增删改查),需要用到redis的客户端,包括:命令行客户端;图形化桌面客户端;编程客户端。

 命令行客户端:redis安装完成后自带命令后客户端 redis-cli 。

使用方式: redis-cli [options] [commands]    常见的options有 -h 127.0.0.1 指定redis连接的IP地址, -p 6379 指定redis连接的端口号, -a xxxx.. 指定redis连接的密码。

其中commands就像redis的操作命令,不指定command就进入redis-cli的交互控制台

下面来演示一下: 

   我们可以 redis-cli 命令直接进入交互控制台,但此时客户端的权限大多被限制,需要我们用密码登陆一下,密码登陆命令 AUTH 你的密码

 

redis数据结构:key一般是string类型,value类型多种多样,支持:string,hash,list,set,sortedSet(这5个为基本类型),GEO,BiteMap,HyperLog(后三个为特殊类型)

下面介绍一下redis的基础常用命令(所以数据类型都可以用):

 key pattren 返回key包括pattern的所有key(模糊查询)。

 keys * 查询所有key。   key a* 查询key以a开头的key。不建议在生产环境上使用,因为当存储数据很多时,redis单线程运行,很容易堵塞。

 del keys(可以只删一个,也可以删多个) 返回成功删除的key的数量。

 MSET a1 b1 a2 b2 a3 b3  添加多个键值对,键值对为(a1,b1),(a2,b2),(a3,b3)。

 exists key 判断该key shift存在

 expire key seconds 给该key设置一个有效期,到期时该key自动删除。

 TTL key 查看该key的有效期。-1 为永久有效;-2 为已失效。

value类型介绍:

 string类型:是redis中最简单的存储类型,根据字段串格式不同又分为三类:string普通字符串,int整型 可自增自减,float浮点类型 可自增自减。不过底层都是字节数组形式存储。字符串类型最大存储空间不超过512m

 命令:set key value 添加一个新键值对或修改一个已有键值对

            get key 根据key获取value

           MGET key1 key2 key3 ... 根据多个key获取多个value值。

        incrby key  数字   :让一个整型key的value值自增指定步长(前面中的数字)

     incrbyfloat  让一个浮点类型key的value值自增指定步长(前面中的数字)

   setnx key value 添加一个string 类型键值对,前提是该key不存在,否则不执行

   setex key seconds value 添加一个string键值对,并指定有效期

  redis的key运行有目录关系形成层次结构,多个目录之间用:隔开。

hash类型:也叫散列,其value是一个无序字典,类似于hashMap,在存储对象时,string结构时将对象序列化为json字符串存储,很不方便修改其中的某个字段。  hash结构可以将对象中的每个字段独立存储,可以针对单个字段做crud

常用命令:

 

list类型:

  redis中的list类型与JAVA的linkedlist类似,可以看做一个双向列表。即可以支持正向检索也可以支持反检索。 特征:有序、元素可重复、插入和删除快、查询速度一般

set类型:

  redis的set结构与JAVA中的hashSet类似,可以看作一个value为Null的hashMap。特征:无序,元素不可重复,查找快,支持交集、并集、差集等功能

常见命令:

sortedSet类型:

 是一个可排序的set集合,功能上与JAVA中的treeSet有些类似,但底层数据结构却差别很大。sortedSet中的每一个元素都带有score属性,可以基于score属性对元素排序,底层的实现是一个跳表(skipList)加hash表。 特征:可排序;元素不可重复;查询速度快。经常被用于实现排行榜

 常见命令:

注意:所以排名默认都是升序,如果要降序则在命令首字母Z后面添加REV即可。

我们也可以在命令行客户端用help命令查看相应的命令:

输入完 help @后 ,直接按tab键,就会自动填充数据类型,每次按tab键都会换一个数据类型

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【LLM】两篇多模态LLM综述MultiModal Large Language Models

note (一)现有的 MM-LLM 的趋势: (1)从专门强调 MM 理解对特定模态的生成的进展,并进一步演变为任何到任何模态的转换(例如,MiniGPT-4 → MiniGPT-5 → NExT-GPT); (2) 从 MM PT 提…

神经网络与深度学习——第7章 网络优化与正则化

本文讨论的内容参考自《神经网络与深度学习》https://nndl.github.io/ 第7章 网络优化与正则化 网络优化与正则化 网络优化 网络结构多样性 高维变量的非凸优化 神经网络优化的改善方法 优化算法 小批量梯度下降 批量大小选择 学习率调整 学习率衰减 学习率预热 周期性学习率调…

装甲车启动电源的安全性能分析

装甲车辆启动电源是一种为装甲车辆提供启动动力的专业设备。它通常被用于 火箭兵 、步兵战车、装甲运兵车等JS车辆,这些车辆通常需要较高的启动功率来启动其发动机,尤其是装甲车的发动机,由于其功率大,启动对电力要求很高。在现代…

3DMAX一键虚线图形插件DashedShape使用方法

3DMAX一键虚线图形插件使用方法 3dMax一键虚线图形插件,允许从场景中拾取的样条线创建虚线形状。该工具使你能够创建完全自定义的填充图案,为线段设置不同的材质ID,并在视口中进行方便的预览。 【版本要求】 3dMax 2012 – 2025(…

HarmonyOS应用开发学习历程(1)初识DevEco Studio

1.create project Bundle name:包名,标识应用程序,默认应用ID也使用该名 Compile SDK:编译时API版本 2.工程目录 AppScope:应用全局所需资源 entry:应用的主模块,含代码、资源 hvigor&#…

Java多线程问题

线程 何为线程:线程是一个比进程更小的执行单位。一个进程在其执行的过程中可以产生多个线程。与进程不同的是同类的多个线程共享进程的堆和方法区资源,但每个线程有自己的程序计数器、虚拟机栈和本地方法栈,所以系统在产生一个线程&#xf…

OSEK错误处理及跟踪调试

1 前言 如表1所示,OSEK提供了一些特殊的钩子例程(Hook routines),应用层可以在钩子函数中自定义操作,以参与到操作系统的内部处理中。 表1 钩子函数类型 钩子函数例程功能用途ErrorHook用于错误处理StartupHook在系统启…

【论文复现|智能算法改进】基于多策略麻雀搜索算法的机器人路径规划

目录 1.算法原理2.改进点3.结果展示4.参考文献5.代码获取 1.算法原理 【智能算法】麻雀搜索算法(SSA)原理及实现 2.改进点 改进的无限折叠迭代混沌映射 无限折叠迭代映射(ICMIC) 常用于图像加密方向的研究, 基本思想是首先生成[0,1]之间的混沌序列, …

【Qt秘籍】[008]-Qt中的connect函数

在Qt框架中,connect函数是一个非常核心的函数,用于实现信号(Signals)和槽(Slots)之间的连接,它是Qt信号槽机制的关键所在。信号槽机制是一种高级的通信方式,允许对象在状态改变时通知…

掘金AI 商战宝典-系统班:2024掘金AIGC课程(30节视频课)

课程目录 1-第一讲学会向Al提问:万能提问公式_1.mp4 2-第二讲用AI写视频脚本_1.mp4 3-第三讲用AI写视频口播文案_1.mp4 4-第四讲用AI自动做视频(上)_1.mp4 5-第五讲用AI自动做视频(中)_1.mp4 6-第六讲用AI自动做视…

1. Mybatis基础操作

目录 1.1 需求 1.2 准备 1.3 删除 1.3.1 功能实现 1.3.2 日志输入 1.3.3 预编译SQL 1.3.3.1 介绍 1.3.3.2 SQL注入 1.3.3.3 参数占位符 1.4 新增 1.4.1 基本新增 1.4.2 主键返回 1.5 更新 1.6 查询 1.6.1 根据ID查询 1.6.2 数据封装 1.6.3 条件查询 1.6.4 参…

Tree——输出项目的文件结构(Linux)

输出项目中的文件结构可以使用tree命令。tree是一个用于以树状结构显示目录内容的命令行工具。它非常适合快速查看项目的文件结构。安装: sudo apt-get install tree 使用: 在命令行中导航到项目的根目录,输出文件结构。 tree 也可以将结构输…

NXP RT1060学习总结 - CANFD功能

1、RT1060-CAN FD功能简介 这里使用RT1060系列的1064芯片进行开发,测试板是官方提供的开发板;RT1060系列支持3路CAN功能,CAN1和CAN2只能最为普通的CAN外设,支持CAN2.0,而CAN3支持CAN-FD功能;CAN-FD功能这里…

数据库概念

本篇会加入个人的所谓鱼式疯言 ❤️❤️❤️鱼式疯言:❤️❤️❤️此疯言非彼疯言 而是理解过并总结出来通俗易懂的大白话, 小编会尽可能的在每个概念后插入鱼式疯言,帮助大家理解的. 🤭🤭🤭可能说的不是那么严谨.但小编初心是能让更多人能接…

Java学习Lambda表达式

Lambda表达式 有且只有一个未实现的方法叫做Lambda表达式,可以实现函数式编程 // 这个注解是用来检查你写的函数是否是函数式接口 FunctionalInterfaceinterface Myinterface {int sum(int a, int b);default String priteTitle(String name, int age, String sex)…

<Rust><iced>基于rust使用iced库构建GUI实例:动态改变主题色

前言 本专栏是Rust实例应用。 环境配置 平台:windows 软件:vscode 语言:rust 库:iced、iced_aw 概述 本篇构建了这样的一个实例,可以动态修改UI的主题,通过菜单栏来选择预设的自定义主题和官方主题&#…

1+X Web应用软件测试(中级) 考试失利教训

考证考试结束的第二天复盘 复盘时间:2024/6/2 9:45-10:00 考试名称:1X Web应用软件测试(中级) 电子书:Web应用软件测试(中级) 他人备考技巧 改进: [考前策略]自动化40性能40功能2个20 1.可以2人分工合作,完成一整套功能测试题目 2.制定阶段时间的学…

使用PyCharm 开发工具创建工程

一. 简介 前面学习了 安装 python解释器。如何安装python的一种开发工具 PyCharm。 本文来简单学习一下,如何使用 PyCharm 开发工具创建一个简单的 python工程。 二. PyCharm 开发工具创建一个工程 1. 首先,首先打开PyCharm 开发工具。选择 创建一…

社交媒体数据恢复:淘宝旺信

根据搜索结果,阿里旺旺聊天记录的恢复方法如下: 运行阿里旺旺在旺旺面板底部点击小喇叭图标在打开的消息管理器窗口右上角点击"搜索"点击"高级搜索"设置所需查找的时间段---"搜索" 此外,在阿里旺旺的云存储中…

xdp、dpdk、rdma能在同一网卡上同时使用吗?

文心一言 XDP、DPDK和RDMA是三种不同的技术,它们各自在Linux网络性能优化中扮演了不同的角色。关于它们能否在同一网卡上同时使用,我们需要考虑以下几个方面: XDP(eXpress Data Path): XDP是Linux内核提供…