02、Redis从入门到放弃 之 常用命令和基本数据类型操作

server/2025/1/20 20:39:27/

Redis从入门到放弃 之 常用命令和基本数据类型操作

一、Redis通用命令

redis-cli -h 127.0.0.1 -p 6379  redis客户端登录 -h host    -p  端口    -a   密码exit 退出当前客户端info 返回redis的一些相关信息(包括端口、配置文件等)flushdb 清空当前库中的所有数据flushall 清空所有库中的所有数据save 将当前内存中的数据持久化到dump.rdb中(只管保存、其他全部阻塞)bgsave 将当前内存中的数据持久化到dump.rdb中(后台异步进行快照操作)set  k1   v1     设置K / V 键值对 (重复设置、覆盖原来的value)get k1        获取 K1对应的值keys a*            获取当前库中所有以a开头的key键dbsize 查看当前所在库的key的数量select 2 选择第3个库del k1        删除dump k1       序列化给定的key,并返回被序列化的值exists  k1     k1是否存在,存在返回1、不存在返回0expire k1 10  设定k1的过期时间为10秒(只存在10秒,过期后自动删除)(返回1 设置成功、返回0设置失败)ttl k1 查看k1的生命周期还有多长时间persist k1 移除k1的过期时间,k1将持久保持expireat k1 1293840000 设置过期时间为  1293840000(时间戳)randomkey 随机返回一个当前库的keyrename k1 kk1 修改k1的名称为kk1(kk1存在时,原k1的值将覆盖原kk1的值)renamenx k1 kk1  仅当kk1不存在时,将k1改为kk1type k1 返回k1的所存储值的类型move k1 2 将k1移动到第3个库(原库中的k1删除,第三个库中增加k1)

二、基本数据类型

Redis支持五种数据类型:string(字符串),hash(哈希),list(列表),set(集合)及zset(sorted set:有序集合)

1、string字符串

string是redis最基本的类型,一个key对应一个value。是二进制安全的,比如jpg图片或者序列化的对象 。string类型是Redis最基本的数据类型,一个键最大能存储512MB。常用字符串命令:set k1 'helloWorld'   为k1赋字符串值get  k1  获取k1对应的值getset k1  'worldHello'      将k1的值重新设为worldHello并返回k1原来的值he'llWorld (如果k1不存在,则新建k1)mget k1 k2 k3获取k1 k2 k3的值setex k1 10 'helloWorld'设置k1的值位helloWorld,并将其过期时间设置为10秒setnx  k1 'testsetnx'k1不存在时,设置k1的值位testsetnx。(成功返回1,不成功返回0)setrange k1 1 'bbbb'从偏移量1位置开始  复写k1的原来的值 (原helloWorld,现hbbbbWorld)getrange k1 0 2 获取(截取)k1从第0位到第2位的值strlen  k1 获取k1 的值的字符串长度mset k1 v1 k2 v2 k3 v3同时设置k1 k2 k3 的值分别为v1 v2 v3msetnx k1 v1 k2 v2 k3 v3当且仅当 “所有”k1 k2 k3  都  不存在时,设置k1 k2 k3的值位v1 v2 v3incr k1  如果k1的值为 数字(整数),则将其值加1. 若k1 不存在 则设置k1的值为1(默认值为0,incr之后为1)incrby k1 5如果k1的值为 数字(整数),则将其值加5.若k1 不存在 则设置k1的值为5(默认为0,incrby之后为5)incrbyfloat k1 1.22如果k1的值为 数字,则将其值加1.22若k1不存在则设置k1的值为1.22(默认为0,incrbyfloat之后为1.22)decr k1  如果k1的值为 数字(整数),则将其值减1,若k1不存在则设置k1的值为-1(默认为0, decr之后为-1)decrby k1 5如果k1的值为 数字(整数),则将其值减5,若k1不存在则设置k1的值为-5(默认为0,decrby之后为-5)
(我曹,那浮点数的减法  是什么命令??????:   只能用 incrbyfloat k1 负数   来代替喽)append k1 aaa如果k1的值是个字符串,则在其值末尾拼接aaa,若k1不存在,则新建一个k1,其值为aaa

2、hash(哈希)

Redis hash 是一个键值对集合。是一个string类型的field和value的映射表,hash特别适合用于存储对象。

hset  person id 1 设置key为person 的hash,且其id  为1hget person  id 获取key为person   的hash的id字段hmset person id 1 name lee 设置key为person的hash,且其id为1  name为leehmget person id name 获取key为person的id 和  name字段hsetnx person age 25 当key为person的hash中age不存在时,设置age字段为25hkeys person获取key为person的hash的所有字段hvals person获取key为person的hash的所有字段的值hgetall person获取key为person的hash的所有字段和字段值del   person 删除key为person  的hash数据hdel person id name 删除key为person中 的 id和name字段(所有字段都删除后 person自动删除)exist person 判断key为person的数据是否存在hexists person id 判断key为person的hash中id字段是否存在(没有hmexists   泪目)hincryby person id 2 给person的id字段上增加2(如果id为数字 且是整数)   (没有hdecrby  泪目)hincrbyfloat person id 1.2 给person的id字段增加1.2(如果id为数字)(没有hincrbyfloat 泪目)dbsize 获取库中所有key的数目hlen  person 获取key为person的hash中  的  字段总数
(hscan命令  没看明白   以后在补上)

3、list(列表)

Redis列表是简单的字符串列表(双向链表结构),按照插入顺序排序。你可以添加一个元素导列表的头部(左边)或者尾部(右边)

(列表允许   数值  重复)
lpush  teacher   lee xue dong 从左侧将lee xue  dong插入teacher(key)中lpop teacher        从teacher左侧移除一个数据rpush  teacher  lee xue dong 从右侧将lee xue  dong插入teacher(key)中rpop teacher 从teacher右侧侧移除一个数据lrange teacher 0  2 从左侧遍历第0个到第2个teacher数据 (0 -1是遍历全部数据)(没有rrange命令)lindex teacher 1 索引teacher从左侧数第2个元素。(第一个是dong 第二个是xue)linsert teacher before lee  geng 从左侧数teacher在lee的前边插入geng (即在lee的左侧插入geng,左侧数 前边就是左边)(没有rinsert)linset teacher after lee geng 从左侧数teacher在lee的后边插入geng(即在Lee的右侧插入geng,左侧数 后边就是右侧)(没有rinsert)llen teacher 获取teacher列表的长度lpushx teacher aa 如果teacher存在,从左侧插入aa。(teacher不存在则插不进去 不会建立新的键)rpushx teacher aa 如果teacher存在,从右侧插入aa。(teacher不存在则插不进去 不会建立新的键)lrem teacher 2 tian 从左侧数 删除teacher列表中的2个tian(如果tian不够,则删除所有)lrem teacher -2 tian 从右侧数 删除teacher列表中的2个天(如果tian不够,则删除所有)lrem teacher 0 tian 删除teacher列表中所有的tianlset teacher 1 su 从左侧数teacher列表在第2个位置添加sultrim teacher 0 2 从左侧数将原teacher列表中从第0个值到第2个值得数据重新赋值给teacherrpoplpush teacher teacher2 将teacher列表中右侧第一个元素移除,并在teacher2列表中左侧添加进去

4、set(集合)

Redis的Set是string类型的无序集合,集合成员是唯一的,这就意味着集合中不能出现重复的数据。

Redis 中 集合是通过哈希表实现的,所以添加,删除,查找的复杂度都是O(1)。

(集合中  不允许  重复 、  且是无序的)
sadd test a b c d    向test集合中添加元素a b c dsmembers test       获取test集合的所有元素sismember test a   验证元素a是否是test集合的成员 (1是0不是)scard test               获取test集合中所有元素的个数srem  test a b         从test集合中移除元素a和bspop test       从test集合中随机出栈(移除一个元素)srandmember test    从test集合中随机显示一个数smove test1 test2 a   将元素a从test1集合中移到test2集合中sdiff test1 test2集合test1和集合test2的  差集(即test1集合存在test2集合中不存在的元素)sdiffstore test3 test1 test2  将test1集合和test2集合  的差集  赋值给test3集合(如果test3集合中有值  则覆盖原
来的值)sinter test1 test2集合test1和集合test2的   交集(即test1集合和test2集合共同拥有的元素)sinterstore test3 test1 test2  将test1集合和test2集合  的交集  赋值给test3集合(如果test3集合中有值  则覆盖原来的值)sunion test1 test2集合test1和集合test2 的 并集 (即test1集合  和  test2 集合  所有的元素组合  且会去重)sunionstore test3 test1 test2将集合test1和集合test2的  并集  赋值给集合test3
(sscan命令没看明白  以后补上)

5、sorted set(有序集合)

Redis 有序集合和集合一样也是string类型元素的集合,且不允许重复的成员。不同的是每个元素都会关联一个double类型的分数。redis正是通过分数来为集合中的成员进行从小到大的排序。有序集合的成员是唯一的,但分数(score)却可以重复。

(集合中   不允许  重复,有序的   分数是可以重复的)
zadd  subject 1 chinese 2 english 3 math  设置subject集合  元素  分别为 1分 chinese  2分english 3分 math
zrange subject 0 -1 显示全部的subject集合的元素(分数默认是由低到高的)
zrange subject 0 -1 withscores 显示全部的subject集合的元素 和  对应的分数(分数默认是由低到高的)
zcard subject显示subject集合的元素个数
zcount  subject 1 2计算subject集合 分数在1和2之间的元素个数(包括1和2)
zincrby subject 10 chinese
给集合subject的chinese元素的分数加10
zinterstore subject 
zlexcount subject 

http://www.ppmy.cn/server/159979.html

相关文章

【探寻C++之旅】第二章:类和对象(上)

请君浏览 前言1. 类和对象是什么2. 类的定义2.1 类定义的格式2.2 访问限定符2.3 类域 3. 实例化3.1 实例化概念3.2 对象大小 4. this指针5. C和C语言实现Stack(栈)的对比尾声 前言 今天,我们继续踏入追寻C的冒险历程。上一章我们简单介绍了C中…

C# OpenCV机器视觉:常用滤波算法

在一个电闪雷鸣的夜晚,阿强的实验室里却灯火通明,宛如黑暗中的科技孤岛。窗外狂风呼啸,大雨倾盆,仿佛是世界末日的序曲;而屋内,阿强正对着电脑屏幕愁眉苦脸,屏幕上是一张张 “惨不忍睹” 的图像…

高性能、并发安全的 Go 嵌入式缓存库 如何使用?

文章精选推荐 1 JetBrains Ai assistant 编程工具让你的工作效率翻倍 2 Extra Icons:JetBrains IDE的图标增强神器 3 IDEA插件推荐-SequenceDiagram,自动生成时序图 4 BashSupport Pro 这个ides插件主要是用来干嘛的 ? 5 IDEA必装的插件&…

【MVCC过程中会加锁吗?】

MVCC过程中会加锁吗? 一、MVCC的工作原理二、MVCC的并发控制三、MVCC中的加锁情况在MVCC(Multi-Version Concurrency Control,多版本并发控制)过程中, 通常不需要加锁来控制并发访问。 MVCC是一种数据并发控制技术,它允许在不同的事务中对同一数据进行并发访问,而不需要…

Android中下载 HAXM 报错 HAXM installation failed,如何解决?

AMD芯片的电脑在 Android Studio 中安装 Virtual Device 时,经常会出现一个 问题 Intel HAXM installation failed. To install Intel HAXM follow the instructions found at: https://github.com/intel/haxm/wiki/Installation-Instructions-on-Windows 一直提示H…

HTTP:TIME_WAIT累积与端口耗尽

背景:当某个 TCP 端点关闭 TCP 连接时,会在内存中维护一个小的控制块,用来记录最 近所关闭连接的 IP 地址和端口号。这类信息只会维持一小段时间,通常是所估计的 最大分段使用期的两倍(称为 2MSL,通常为 2 分钟 8)左右…

数据结构-栈和队列

文章目录 一、栈1.概念与结构2.数组栈的实现2.1 栈的结构定义2.2 栈的初始化2.3 栈的销毁2.4 栈的判空2.5 栈的入栈2.6 栈的出栈2.7 查看栈顶元素2.8 栈的大小 3.两种栈的图示结构 二、队列1.概念与结构2.链式队列的实现2.1 队列的结构定义2.2 队列的初始化2.3 队列的销毁2.4 队…

SSM课设-学生管理系统

【课设者】SSM课设-学生管理系统 技术栈: 后端: SpringSpringMVCMybatisMySQLJSP 前端: HtmlCssJavaScriptEasyUIAjax 功能: 学生端: 登陆 学生信息管理 个人信息管理 老师端: 多了教师信息管理 管理员端: 多了班级信息管理 多了年级信息管理 多了系统用户管理