ubuntu中redis客户端与服务端命令、redis数据类型、字符串string、哈希hash、列表list、集合set、有序集合zset操作命令

news2024/7/31 9:25:51

一、NoSQL概述

NoSQL(not only SQL):泛指非关系型数据库,是一类新出现的数据库,不支持SQL语法,其存储的数据都是kv形式,存储结构与关系型数据库中的关系表完全不同

NoSQL产品种类:主要有Redis、MongoDB、HBASE Hadoop、Cassandra Hadoop

nosql没有通用的语言,每种产品都有自己的api和语法,以及擅长的业务场景

NoSQL与SQL区别比较

  • 适用场景不同,SQL适用于关系特别复杂的数据查询场景,而NoSQL与之相反
  • 事务支持不同,SQL对于事务的支持非常完善,而NoSQL基本不支持事务
  • 二者各有所长、取长补短,呈现融合趋势

二、Redis概述

Redis:开源、使用ANSI C语言编写、支持网络集群搭建、可基于内存和可持久化的日志型、key-value数据库,并支持多种语言的API,通过多种键值数据类型来适应不同场景下的存储需求,借助一些高级接口可以胜任缓存、系统队列的不同角色

Redis与其它kv产品特点

  • 支持数据持久化,可将内存中的数据保存在磁盘中,重启可再次加载使用
  • 支持简单的kv类型数据,同时还提供list、set(无序集合)、zset(有序集合)、hash等数据结构的存储
  • 支持master-slave模式的数据备份

Redis优势

  • 读写性能极高:读的速度是110000次/s,写的速度是81000次/s,数据在内存中
  • 数据类型丰富:支持二进制的 Strings,Lists,Hashes,Sets 及 Ordered Sets 数据类型操作
  • 原子性:所有操作都具有原子性,能够保证一致性
  • 特性丰富:支持publish、subscribe、通知、key过期等特性

Redis应用场景

  • 用来做缓存(ehcache/memcached):redis的所有数据是放在内存中的,即为内存数据库
  • 可在某些特定应用场景下代替关系型数据库,可在大型系统中巧妙实现一些特定功能

三、安装与配置

ubuntu安装与配置:ubuntu安装和启动redis命令步骤及其配置文件redis.conf

windows安装redis:windows下载redis、windows安装redis、windows启动redis

四、服务端与客户端命令 

  • 服务端
    • 服务端命令:redis-server
    • 查看帮助文档:redis-server --help
    • 查看redis-server服务进程:ps aux | grep redis
    • 杀死redis服务器:sudo kill -9 pid
    • 指定加载的配置文件:sudo redis-server /etc/redis/redis.conf
  • 客户端
    • 客户端命令:redis-cli
    • 查看帮助文档:redis-cli --help
    • 连接redis:redis-cli
    • 运行测试命令:ping
    • 切换数据库:默认16个,由0-15来标识,连接时默认选择第一个数据库

部分操作展示如下,其余请访问第三部分安装与配置

五、redis数据类型

redis是k-v的数据结构,每条数据都是一个键值对

  • 键:类型是字符串,不能重复
  • 值:类型有字符串string、哈希hash、列表list、集合set、有序集合zset五种

5.1 string类型

string类型:是redis中最为基础的数据存储类型,存储的是二进制,这意味着该类型可存储任何格式的数据,如jpg、json等,string类型的value最多可容纳512M的数据长度

命令如下

保存/修改:若键值不存在则添加,若已存在则修改
设置键值:set key value
设置键值及过期时间:setex key seconds value  // 以秒为单位
设置多个键值:mset key1 value1 key2 value2 ……
追加值:append key value

获取:根据键获取值,若不存在此键则返回nil
获取键值:get key
根据多个键获取多个值:mget key1 key2 ……

具体操作如下

可能报如下错误

(error) MISCONF Redis is configured to save RDB snapshots,but it is currently not able 
to persist on disk. Commands that may modify the data set are disabled,because this 
instance is configured to report errors during writes if RDB snapshotting fails (stop
writes-on-bgsave-error option). Please check the Redis Logs for details about the RDB
error.

解释:(错误)MISCONF Redis 已配置为保存 RDB 快照,但目前无法持久化在磁盘上。可能修改数据集的命令将被禁用,因为此实例配置为在 RDB 快照失败时在写入期间报告错误(在 bgsave 错误时停止写入选项)。请查看 Redis 日志,了解有关 RDB 错误的详细信息。

  • 原因:强制关闭Redis快照导致不能持久化

解决方法:

输入命令修改值为no:config set stop-writes-on-bgsave-error no

获取与修改

5.2 键命令

查找键:keys pattern   # pattern支持正则表达式
判断键是否存在:exists key   # 存在返回1,否则返回0
查看键所对应的value值的类型:type key   # 结果为redis所支持的五种类型中一种
删除键及所对应值:del key1 key2 ……
设置过期时间:expire key seconds   # 以秒为单位,若为指定时间则一直存在,直至用del删除
查看有效时间:ttl key   # 秒为单位

操作如下

5.3 hash类型

hash用于存储对象,对象的结构为属性、值 ,值的类型为string

增加、修改:有则修改、无则添加
设置单个属性:hset key field value  # k-f-v:键-属性-值
设置多个属性:hmset key field1 value1 field2 value2 ……

获取
获取指定键所有属性:hkeys key
获取一个属性的值:hget key field
获取多个属性的值:hmget key field1 field2 ……
获取所有属性的值:hvals key

删除
删除整个hash键和值:del key
删除属性:hdel key field1 field2 ……   # 属性对应值会一起删除

5.4 列表类型

列表元素类型为string,按插入顺序排序

增加
左侧插入数据:lpush key value1 value2 ……
右侧插入数据:rpush key value1 value2 ……
在指定元素前或后插入数据:insert key before或after 指定元素 新元素

获取
返回列表中指定范围内的元素:lrange key start stop   
# start、stop为下标索引,索引从左开始,第一个为0,索引可为负,表示从尾部开始计数,-1表示最后一个元素

修改
设置指定索引位置元素值:lset key index value

删除
删除指定元素:lrem key count value  # 键列表中前count次出现的值为value的元素删除
    count>0:从头至尾移除
    count<0:从尾至头移除
    count=0:移除所有

5.5 set类型

无序集合,元素为string类型,元素具有唯一性,不能重复,不能修改

添加元素:sadd key member1 member2 ……

获取所有元素:smembers key

删除指定元素:srem key 指定元素

操作如下

5.6 zset类型

有序集合(sorted set),元素为string类型,具有唯一性,不能重复,不能修改,每个元素都会关联一个double类型的score,表示权重,通过权重将元素从小到大排序

增加:zadd key score1 member1 score2 member2 ……

获取:zrange key start stop  
# 返回指定范围内的元素,start、stop为下标索引,索引从左开始,第一个元素为0
# 索引可为负,表示从尾部开始计数,如-1表示最后一个元素

返回score值在min和max之间的成员:zrangebyscore key min max
返回成员member的score值:zscore key member

删除
删除指定元素:zrem key member1 member2
删除权重在指定范围的元素:zremrangebyscore key min max

操作如下 

 学习导航:http://xqnav.top/

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

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

相关文章

超百万人用它生成3D头像,这项技术刚刚中选了SIGGRAPH Asia 2022

如何才能做一个和真人一样的 3D 头像&#xff1f; 先上传一张照片&#xff1a; 变成这样&#xff1a; 换一个人的照片&#xff1a; 再看一个例子&#xff1a; 眼镜也可以放进来&#xff1a; 在此基础上&#xff0c;还可以换上各种各样的发型、饰品&#xff0c;眼睛、帽子、发色…

Css定位

定位 为什么需要定位&#xff1f; 提问&#xff1a;以下情况使用标准流或者浮动能实现吗&#xff1f; 某个元素可以自由的在一个盒子内移动位置&#xff0c;并且压住其他盒子。当我们滚动窗口的时候&#xff0c;盒子是固定在屏幕的某个位置的 所以&#xff1a; 浮动可以让多…

笨办法学 Python(第三版)习题 2: 注释和#号

参考书籍 代码 # -*- coding: utf-8 -*-# A comment, this is so you can read your program later. # Anything after the # is ignored by python.print("I could have code like this.") # and the comment after is ignored# You can also use a comment to &qu…

北京外国语大学2023年上半年公派英语高级培训班开始招生

教育部指定出国留学人员培训部的“培训班结业证书”是国家留学基金委&#xff08;CSC&#xff09;公派项目认可的外语水平证明文件之一。近日&#xff0c;北京外国语大学发出2023年上半年公派英语高级培训班招生简章。为方便培训者了解情况&#xff0c;知识人网小编特转载如下。…

LeetCode[112]路径总和

难度&#xff1a;简单 题目&#xff1a; 给你二叉树的根节点 root 和一个表示目标和的整数 targetSum 。判断该树中是否存在 根节点到叶子节点 的路径&#xff0c;这条路径上所有节点值相加等于目标和 targetSum 。如果存在&#xff0c;返回 true &#xff1b;否则&#xff0c…

cookie

cookie Cookie是一个客户端会话技术&#xff0c;是由服务器端创建&#xff0c;放在响应头发送到客户端保存&#xff0c;用于存储少量数 据&#xff0c;因为存放在客户端中&#xff0c;容易被人编造伪造&#xff0c;不是很安全。一般不用于存储重要信息。它是通过键值对传递信…

载波通信在电网智能化中的应用

目录载波通信在电网智能化中的应用电力载波通信特点电力载波通信在电力智能化中应用载波数据通信载波语音通信高速电力线通信&#xff08;HPLC&#xff09;载波通信在电网智能化中的应用 电力载波通信特点 电力载波通信&#xff08;Power line Communication&#xff09;即PL…

Nginx防盗链

资源盗链 资源盗链指的是此内容不在自己服务器上&#xff0c;而是通过技术手段&#xff0c;绕过别人的限制将别人的内容放到自己页面上最终展示给用户。以此来盗取大网站的空间和流量。简而言之就是用别人的东西成就自己的网站。 案例 创建steal.html&#xff0c;页面引用两…

视频直播美颜SDK算法代码解析

随着短视频、直播软件一类app的流行&#xff0c;美颜sdk的应用也越来越广泛。所谓“美颜”&#xff0c;简单解释下&#xff0c;就是通过视频&#xff08;图片&#xff09;技术对人脸进行美化。但是就“美化”这个词&#xff0c;却牵扯到众多深度学习、图像处理、图像学技术。今…

vant-list上滑加载,数据重复,加载后返回顶部

&#xff08;1&#xff09;vant-list上滑加载 list这个组件&#xff0c;必须具有高度&#xff0c;才能实现上滑加载&#xff0c;不然不会有上滑加载的过程。 因为没有高度&#xff0c;相当于整个屏幕都是组件的&#xff0c;就没有底部一说&#xff0c;所以会一直加载所有的&…

Debye-Wolf积分计算器的用法

摘要 众所周知&#xff0c;Debye-Wolf积分可用于以半解析的方式计算焦平面附近的矢量场。Debye-Wolf积分通常用作分析高数值孔径显微镜成像情况的基本工具。 基于理想化模型&#xff0c;因此不需要精确的镜头规格即可进行计算。 该案例将说明如何在VirtualLab中使用Debye-Wolf积…

[力扣] 剑指 Offer 第三天 - 替换空格

[力扣] 剑指 Offer 第三天 - 替换空格题目来源题目描述示例题目分析算法代码实现执行结果复杂度分析总结耐心和持久胜过激烈和狂热。 题目来源 来源&#xff1a;力扣&#xff08;LeetCode&#xff09; 链接&#xff1a;https://leetcode.cn/problems/ti-huan-kong-ge-lcof 著作…

什么是CUSDEC 报关单?

CUSDEC即Customs Declaration Message&#xff0c;中文解释是报关单&#xff0c;符合EDIFACT国际报文标准。 报关单信息 (CUSDEC) 允许将数据从报关员转移到海关管理部门&#xff0c;以满足有关进口、出口或过境货物申报的立法或操作要求。这个报文的应用场景还包括&#xff1…

【Hack The Box】windows练习-- Intelligence

HTB 学习笔记 【Hack The Box】windows练习-- Intelligence &#x1f525;系列专栏&#xff1a;Hack The Box &#x1f389;欢迎关注&#x1f50e;点赞&#x1f44d;收藏⭐️留言&#x1f4dd; &#x1f4c6;首发时间&#xff1a;&#x1f334;2022年9月7日&#x1f334; &…

C++11更新内容(2)--完美转发--默认移动构造/移动赋值--1116

1.完美转发 1.1万能引用 void Fun(int &x){ cout << "左值引用" << endl; } void Fun(const int &x){ cout << "const 左值引用" << endl; }void Fun(int &&x){ cout << "右值引用" << e…

分布式数据库Cassandra

目录 一、概述 1、简介 2、架构 3、使用场景 二、安装 三、基本概念 1、数据模型 列&#xff08;Column&#xff09; 列族 KeySpace 节点&#xff08;Node&#xff09; 集群&#xff08;Cluster&#xff09; 2、数据类型 基础类型 集合类型 自定义数据类型 …

Linux开发工具(3)——gcc/g++

文章目录Linux编译器——gcc/g程序编译背景知识gcc指令动态链接和静态链接Linux下运行其他语言Linux编译器——gcc/g 程序编译背景知识 程序的编译分为四步&#xff1a; 预处理&#xff1a;主要完成的是&#xff0c;头文件展开&#xff0c;宏替换&#xff0c;注释删除&#x…

基于Matlab使用GPU和代码加速杂波模拟(附源码)

目录 一、杂波模拟 二、比较杂波模拟时间 三、其他仿真时序结果 四、总结 五、程序 此示例演示如何在图形处理单元 &#xff08;GPU&#xff09; 上或通过代码生成 &#xff08;MEX&#xff09; 而不是 MATLAB 解释器来模拟混乱。该示例将样本矩阵反演 &#xff08;SMI&am…

DVWA靶场在sql注入联合查询时返回报错信息 “Illegal mix of collations for operation ‘UNION’ ”之解决

比如我们输入&#xff1a; -1 union select 1,table_name from information_schema.tables where table_schemadvwa#会跳出一个页面出现报错提示&#xff1a; Illegal mix of collations for operation UNION这是由于union连接数据库中的字段的字符规则不一样导致的错误&…

MySQL—Apache+PHP+MySQL实现网上社区

ApachePHPMySQL实现网上社区 所谓网上社区是指包括BBS/论坛、聊天室、博客等形式在内的网上交流空间&#xff0c;同一主题的网上社区集中了具有共同兴趣的访问者&#xff0c;由于有众多用户的参与&#xff0c;因此具备了交流的功能&#xff0c;成为一个营销场所。网上社区有各…