Redis入门(二)

news2024/11/15 13:28:48

3.7 Redis 默认16个库

1)Redis默认创建16个库,每个库对应一个下标,从0开始.
通过客户端连接后默认进入到0 号库,推荐只使用0号库.

127.0.0.1:6379> 

16个是因为配置文件中是这样的 [aa@hadoop102 redis]$ vim redis.conf
在这里插入图片描述
2)使用命令 select 库的下标来切换数据库

127.0.0.1:6379> select 1
OK
127.0.0.1:6379[1]>

第4章 Redis的五大数据类型

4.1 帮助手册

http://redisdoc.com/

4.2 redis键(key)

1)查看当前库的所有键

127.0.0.1:6379> keys *

2)判断某个键是否存在

127.0.0.1:6379> exists <key>

3)查看键对应的value的类型

127.0.0.1:6379> type <key>

4)删除某个键

127.0.0.1:6379> del <key>

5)设置过期时间

127.0.0.1:6379> expire <key> <second>

6)查看过期时间,-1表示永不过期,-2表示已过期

127.0.0.1:6379> ttl <key>

7)查看当前库中key的数量

127.0.0.1:6379> dbsize

8)清空当前库

127.0.0.1:6379> flushdb

9)清空所有库

127.0.0.1:6379> flushall

在这里插入图片描述

4.3 String

4.3.1 特点

(1)String是Redis最基本的类型,适合保存单值类型,即一个key对应一个value(2)String类型是二进制安全的。意味着Redis的string可以包含任何数据。比如jpg图片或者序列化的对象 。
(3)一个Redis中字符串value最多可以是512M
在这里插入图片描述

4.3.2 常用操作

1)添加键值对

127.0.0.1:6379> set <key> <value>

2)获取键的值

127.0.0.1:6379> get <key>

3)将给定的追加到原值的末尾

127.0.0.1:6379> append <key> <value>

4)获取值的长度

127.0.0.1:6379> strlen <key>

5)当key不存在时设置key的值

127.0.0.1:6379> setnx <key> <value>

6)将key中存储的数字值增1 必须是数字才可以(点赞功能!就是这个!)

127.0.0.1:6379> incr <key>

7)将key中存储的数字值减1

127.0.0.1:6379> decr <key>

8)将key中存储的数字值按照指定步长增 (会员点击加10分….)

127.0.0.1:6379> incrby <key> <步长>

9)将key中存储的数字值按照指定步长减

127.0.0.1:6379> decrby <key> <步长>

10)同时添加一个或者多个key

127.0.0.1:6379> mset <k1> <v1> <k2> <v2>

11)同时获取一个或者多个key的值 m代表多建操作

127.0.0.1:6379> mget <k1> <k2> <k3>

12)同时添加一个或者多个key,当且仅当所有给定的key都不存在

127.0.0.1:6379> msetnx <k1> <v1> <k2> <v2>

13)获取值的子串 C语言索引从0开始!

127.0.0.1:6379> getrange <key> <start> <end>

14)从指定的开始位置覆盖旧值

127.0.0.1:6379> setrange <key> <start> <value>

15)同时设置值和过期时间 手机验证码就是这个 set expire

127.0.0.1:6379> setex <key> <seconds> <value>

16)设置新值的同时获取旧值

127.0.0.1:6379> getset <key> <value>

4.4 List

4.4.1 特点

(1)单键多值
(2)Redis List是简单的字符串列表,按照插入顺序排序。你可以添加一个元素到列表的头部(左边)或者尾部(右边)。
(3)它的底层实际是个双向链表(Java中list单向),对两端的操作性能很高,通过索引下标的操作中间的节点性能会较差
在这里插入图片描述
表示整个集合:[o.-1] 或 [-1,-6] 但是随着加入新的值,会发生变化,比如-6变为-7…而[0,-1]是不变的。

4.4.2 常用操作

1)从左边插入一个或多个值

127.0.0.1:6379> lpush <key> <element…> 

2)从右边插入一个或多个值

127.0.0.1:6379> rpush <key> <element…>

3)从左边删除一个值(值在键在,值光键亡)

127.0.0.1:6379> lpop <key> 

4)从右边删除一个值(值在键在,值光键亡)

127.0.0.1:6379> rpop <key> 

5)从key1列表右边删除一个值,插入到key2列表左边

127.0.0.1:6379> rpoplpush <key1> <key2>

6)按照索引下标范围获取元素(从左到右)

127.0.0.1:6379> lrange <key> <start> <stop>

7)按照索引下标获取元素(从左到右)

127.0.0.1:6379> lindex <key> <index>

8)获取列表长度

127.0.0.1:6379> llen <key>

9)在指定的前面或者后面插入

127.0.0.1:6379> linsert <key> before|after <pivot> <element>

10) 从左边删除count个指定的value

127.0.0.1:6379> lrem <key> <count> <element>

4.5 Set

4.5.1 特点

(1)set中的元素是无序不重复的,当你需要存储一个列表数据,又不希望出现重复数据时,set是一个很好的选择,并且set提供了判断某个成员是否在一个set集合内的重要接口,
(2)Redis的Set是string类型的无序集合。它底层其实是一个value为null的hash表,所以添加,删除,查找的复杂度都是O(1)。
4.5.2 常用操作
1)将一个或者多个member元素加入到集合中,已经存在的member将被忽略

127.0.0.1:6379> sadd <key> <member…>

2)取出集合的所有值

127.0.0.1:6379> smemebers  <key>

3)判断集合是否包含指定的member,包含返回1,不包含返回0

127.0.0.1:6379> sismember <key> <member>

4)返回集合的元素个数

127.0.0.1:6379> scard <key>

5)从集合中删除指定的元素

127.0.0.1:6379> srem <key> <member…>

6)随机从集合中删除一个值,会从集合中返回删除的值

127.0.0.1:6379> spop <key>

7)随机从集合中取出n个值,不会从集合中删除 随机抽取n个幸运观众

127.0.0.1:6379> srandmember <key> <count>

8)返回多个集合的交集元素

127.0.0.1:6379> sinter <key…>

9)返回多个集合的并集元素

127.0.0.1:6379> sunion <key…> 

10)返回多个集合的差集元素

127.0.0.1:6379> sdiff <key…> 

在这里插入图片描述

4.6 Hash

4.6.1 特点

(1)Redis hash是一个键值对集合
(2)Redis hash的值是由多个field和value组成的映射表
(3)类似Java里面的Map<String,Object>

4.6.2 分析一个问题: 现有一个User 对象,在Redis中如何存?

1)第一种方案: 用户ID为key ,VALUE为JavaBean序列化后的字符串
在这里插入图片描述
2)第二种方案: 用户ID+属性名作为key, 属性值作为Value.
在这里插入图片描述
3)第三种方案: 通过 key(用户ID) + field(属性标签) 就可以操作对应属性数据了,既不需要重复存储数据,也不会带来序列化和并发修改控制的问题
在这里插入图片描述

4.6.3 常用操作

1)给集合中添加指定的 -

127.0.0.1:6379> hset <key>  [<field> <value>]

2)给集合中添加指定的 - ,当指定的field不存在时

127.0.0.1:6379> hsetnx <key> <field> <value> 

3)取出集合中指定field的value

127.0.0.1:6379> hget <key> <field> 

4)判断集合中是否存在指定的field

127.0.0.1:6379> hexists <key> <field> 

5)列出集合中所有的field

127.0.0.1:6379> hkeys <key> 

6)列出集合中所有的value

127.0.0.1:6379> hvals <key> 

7)给集合中指定filed的value值增加increment

127.0.0.1:6379> hincrby  <key> <field> <increment> 

在这里插入图片描述
Hsetnx只能加一个属性

4.7 zset (sorted set)

4.7.1 特点

(1)Redis有序集合zset与普通集合set非常相似,是一个没有重复元素的字符串集合。不同之处是有序集合的每个成员都关联了一个评分(score) ,这个评分(score)被用来按照从最低分到最高分的方式排序集合中的成员。集合的成员是唯一的,但是评分可以是重复了 。
(2)因为元素是有序的, 所以你也可以很快的根据评分(score)或者次序(position)来获取一个范围的元素。访问有序集合的中间元素也是非常快的,因此你能够使用有序集合作为一个没有重复成员的智能列表。

4.7.2 常用操作

1)往集合中添加指定的 member 及score

127.0.0.1:6379> zadd <key> [<score> <member>]

2)从集合中取出指定下标范围的数据,正序取

127.0.0.1:6379> zrange <key> <start> <stop> [WITHSCORES] 

3)从集合中取出指定下标范围的数据,倒序取

127.0.0.1:6379> zrevrange <key> <start> <stop> [WITHSCORES] 

4)从集合中取出指定score范围的数据,默认从小到大

127.0.0.1:6379> zrangebyscore <key> <min> <max> [WITHSCORES]

5)从集合中取出指定score范围的数据,从大到小

127.0.0.1:6379> zrevrangebyscore  <key>  <max> <min> [WITHSCORES]

6)给集合中指定member的score增加increment

127.0.0.1:6379> zincrby <key> <increment> <member>

7)删除集合中指定的member

127.0.0.1:6379> zrem <key> <member…>

8)统计指定score范围的元素个数

127.0.0.1:6379> zcount <key> <min> <max>

9)返回集合中指定member的排名,排名从0开始

127.0.0.1:6379> zrank   <key>  <member>

操作命令不区分大小写

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

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

相关文章

DataX和SQLServer的导入导出案例

DataX和SQLServer的导入导出案例 文章目录 DataX和SQLServer的导入导出案例写在前面SQLServer数据库的简单使用SQLServer数据库一些常用的Shell脚本命令创建数据库 DataX 导入导出案例创建表并插入数据读取 SQLServer 的数据导入到 HDFS读取 SQLServer 的数据导入 MySQL 总结 写…

【C++Coppeliasim】UR机械臂位置正逆解Coppeliasim集成测试

前言&#xff1a; 基于改进的 Denavit-Hartenberg 参数的UR机械臂正向运动学求解和基于几何分析的逆运动学求解。该代码在 C 和 MATLAB 中可用&#xff0c;两者都与 CoppeliaSim 集成。 该解决方案是使用 Microsoft Visual Studio 2022 和 C 20 标准构建的。 依赖&#xff1a; …

C++ 类继承

目录 类继承基类派生一个类构造函数访问权限派生类与基类之间的特殊关系 完整demo 类继承 基类 #ifndef __TEST_1_H_ #define __TEST_1_H_ #include <iostream> #include<string> using namespace std; typedef unsigned int uint;//father class class TableTen…

《编译原理》2022年期末试卷

北京信息科技大学《编译原理》2022年期末考试 试卷附录

双指针-链表相交

面试题 02.07. 链表相交 同&#xff1a;160.链表相交 力扣题目链接 给你两个单链表的头节点 headA 和 headB &#xff0c;请你找出并返回两个单链表相交的起始节点。如果两个链表没有交点&#xff0c;返回 null 。 图示两个链表在节点 c1 开始相交&#xff1a; 题目数据 保…

用c语言查找交通肇事者。

问题&#xff1a; 一辆卡车违反交通规则&#xff0c;撞人后逃跑。现场有3人目击事件&#xff0c;但都没有记住车号&#xff0c; 只记下车号的一些特征。 甲说&#xff1a;“牌照的前两位数字是相同的”。 乙说&#xff1a;“牌照的后两位…

如何高效阅读源码

最近在研究一款开源软件&#xff0c;从初步上手使用到源码分析&#xff0c;依靠看源码解决问题&#xff0c;可以说让自己在阅读源码能力上有了一点小的成长。鲁迅先生曾没说过&#xff0c;“源码是最好的文档”&#xff0c;他还没说过&#xff0c;“带着问题阅读源码最有效”。…

bat脚本添加以管理员权限执行方法

在windows上运行bat脚本的时候&#xff0c;有时候&#xff0c;会因为权限问题导致操作失败&#xff0c;这时候&#xff0c;需要在脚本中提升权限&#xff0c;以管理员权限执行脚本命令。 现在介绍两种方法可以实现管理员权限执行&#xff0c;如下所示&#xff0c;是一段以管理员…

【C++】STL的list容器介绍

目录 6、list容器 6.1list构造函数 6.2list赋值和交换 6.3list大小操作 6.4list插入 6.5list删除 6.6list数据存取 6.7list反转和排序 6、list容器 list本质是带头节点的双向循环链表&#xff0c;链表&#xff08;list&#xff09;是一种物理存储单元上非连续的存储结…

学生必看!免费领取一台阿里云服务器

阿里云学生服务器优惠活动&#xff1a;高效计划&#xff0c;可以免费领取一台阿里云服务器&#xff0c;如果你是一名高校学生&#xff0c;想搭建一个linux学习环境、git代码托管服务器&#xff0c;或者创建个人博客网站记录自己的学习成长历程&#xff0c;拥有一台云服务器是很…

Redis 批处理优化

一、优化建议 1、使用Pipeline Redis 的 Pipeline 可以将多个命令打包成一个请求&#xff0c;从而减少通信次数和网络开销。在批处理时&#xff0c;可以使用 Pipeline 来提高效率。 2、使用批量插入 Redis 支持批量插入&#xff0c;可以将多个数据一次性插入数据库&#xf…

一文看完Vue3的渲染过程

Vue3官网中有下面这样一张图&#xff0c;基本展现出了Vue3的渲染原理&#xff1a; 本文会从源码角度来草率的看一下Vue3的运行全流程&#xff0c;旨在加深对上图的理解&#xff0c;从下面这个很简单的使用示例开始&#xff1a; import { createApp, ref } from "vue"…

Python3 列表与元组 | 菜鸟教程(六)

目录 一、Python3 列表 &#xff08;一&#xff09;简介相关 1、序列是 Python 中最基本的数据结构。 2、序列中的每个值都有对应的位置值&#xff0c;称之为索引&#xff0c;第一个索引是 0&#xff0c;第二个索引是 1&#xff0c;依此类推。 3、Python 有 6 个序列的内置…

Qt编写手机版本视频播放器和Onvif工具(可云台和录像)

一、前言 用Qtffmpeg写播放器很多人有疑问&#xff0c;为何不用Qt自己的多媒体框架来写&#xff0c;最重要的原因是Qt自带的目前都依赖具体的本地解码器&#xff0c;如果解码器不支持&#xff0c;那就是歇菜的&#xff0c;最多支持个MP4格式&#xff0c;而且在手机上也都是支持…

有效的括号

数据结构与算法应用往往隐藏在我们看不到的地方 20. 有效的括号 力扣题目链接 给定一个只包括 ‘(’&#xff0c;‘)’&#xff0c;‘{’&#xff0c;‘}’&#xff0c;‘[’&#xff0c;‘]’ 的字符串&#xff0c;判断字符串是否有效。 有效字符串需满足&#xff1a; 左括…

【Python 随练】打印楼梯与笑脸

题目&#xff1a; 打印楼梯&#xff0c;并在楼梯上方打印两个笑脸 简介&#xff1a; 在本篇博客中&#xff0c;我们将使用 Python 代码打印一个楼梯&#xff0c;并在楼梯上方打印两个笑脸。我们将给出问题的解析&#xff0c;并提供一个完整的代码示例来实现这个效果。 问题…

多目标优化算法:多目标浣熊优化算法(multi-objective Coati Optimization Algorithm,MOCOA)

一、浣熊优化算法COA 浣熊优化算法&#xff08;Coati Optimization Algorithm&#xff0c;COA&#xff09;由Dehghani Mohammad等人于2022年提出的模拟浣熊狩猎行为的优化算法&#xff0c;该算法具有进化能力强&#xff0c;收敛速度快&#xff0c;收敛精度高等特点。 COA具体…

【算法与数据结构】454、LeetCode 四数相加 II

文章目录 一、题目二、解法三、完整代码 所有的LeetCode题解索引&#xff0c;可以看这篇文章——【算法和数据结构】LeetCode题解。 一、题目 二、解法 思路分析&#xff1a;这道题不仅要计算元素的和为0&#xff0c;还要计算元素和为零出现的次数&#xff0c;说明这道题map比较…

【Python 随练】输出国际象棋棋盘

题目&#xff1a; 输出国际象棋棋盘 简介&#xff1a; 在本篇博客中&#xff0c;我们将使用 Python 代码输出国际象棋棋盘。国际象棋棋盘是一个8x8的方格矩阵&#xff0c;交替使用黑色和白色方格。我们将给出问题的解析&#xff0c;并提供一个完整的代码示例来生成这个棋盘。…

C语言之指针详解(1)

目录 本章重点 1. 字符指针 2. 数组指针 3. 指针数组 4. 数组传参和指针传参 5. 函数指针 6. 函数指针数组 7. 指向函数指针数组的指针 8. 回调函数 9. 指针和数组面试题的解析 大家对比前面C语言之指针初阶来看&#xff0c;指针进阶明显看起来难度大了很多&#xff…