Redis的五种基本数据类型
mhr18 2024-11-19 06:47 24 浏览 0 评论
1、概述
- Redis是一个由C语言开发的基于key-value形式的非关系型数据库key-value:键值对【键:String,值:五种数据类型】非关系数据库:NoSQL【Not Only SQL】关系型数据库:由二维表的形式来存储数据不是关系型数据库,就是非关系型数据库
- 存储介质默认是内存可以持久化到磁盘上
- 官网中文:http://www.redis.cn/
- 英文:https://redis.io/
2、Redis的五种基本数据类型
- string:字符串
- hash:对象
- list:有序列表
- set:无序集合
- zset:有序集合
3、基本用法
1、string
set get getset mset mget
setnx strlen append incr incrby
decr decrby
#设置key和value,正确返回OK
set key value
set name zhangsan
#获取key对应的value值,若没有返回nil
get key
get name
#返回key对应的value,再重新设置这个key的值
getset key value
getset name lily
#设置多个键值对 正确返回OK
mset k1 v1 k2 v2 ...
mset sex 1 age 20 address hz
#获取多对key对应的value
mget k1 k2 k3 ...
mget sex age address
#设置key-value:如果key不存在,则设置,如果key存在,则什么都不做
#成功返回1,失败返回0
setnx key value
setnx phone 13577889900
#计算key对应的value的长度
strlen key
strlen phone
#在原先的基础之上进行字符串追加
append key value
append address xs
#本来address的值是hz,现在就是hzxs
#自增1,value是数值类型才能成功。如果key不存在,则直接以0为基础,进行自增。如果这个值不是数值,则会报错
incr key
incr age
#age本来是20,现在返回就是21
#自增指定数量,value是数值类型才能成功
incrby age 5
#age本来是20,现在返回就是25
#自减1,value是数值类型才能成功。
decr key
decr age
#age本来是0,现在返回就是-1
#自减指定数量,value是数值类型才能成功
decrby key
decrby age 20
#age本来是30,现在返回就是10
2、hash
hset hmset hget hmget hkeys
hvals hgetall hexists hlen hsetnx hdel
#设置值,必须指定大key和小key、value
hset person name tom
#设置多值
hmset person sex 1 age 20
#获取单个小key对应的value
hget person sex
#获取多个小key对应的value们
hmget person name age
#获取所有的小key
hkeys person
#获取所有的小key对应的values
hvals person
#获取所有大key中的键值对
hgetall person
#判断小key是否存在
hexists person age
#求大key中小key的数量
hlen person
#设置小key【小key不存在,则设置成功,如果存在,则什么都不做】
hsetnx person age 25
#删除
hdel person age
3、list
- 增加数据:两种方式左边增加数据:左压栈,后增加的数据在左边右边增加数据:右压栈,后增加的数据在右边
- 读取数据读取数据从左往右
lpush rpush lrange llen lindex lpop rpop rpoplpush lrem
#左压栈
lpush key v1 v2 ...
#特征:存入的数据顺序跟读取顺序相反
#右压栈
rpush key v1 v2 ...
#特征:存入的数据顺序跟读取顺序相同
#查询列表中的数据
#下标从0开始,如果要读到最末尾,endIndex就是-1
lrange key startIndex endIndex
lrange key 0 -1
#获取列表元素的个数
llen key
#获取指定索引的元素,index表示索引
lindex key index
#获取指定索引为3的元素
lindex key 3
#从左边弹出一个元素[获取最左边的元素,再删除它]
lpop key
#从右边弹出一个元素
rpop key
#从一个列表的右边弹出元素,再追到加另一个列表的左边
rpoplpush 源列表 目标列表
#移除count个的value值
lrem key count value
lrem names 2 tom
#删除names列表中2个tom【是从左开始移除】
4、set
sadd scard smembers sismember spop sdiff sinter sunion
sdiffstore sinterstore sunionstore smove
#存值
sadd myset aa bb cc
#返回存入的个数
#获取集合长度
scard myset
#获取集合元素
smembers myset
#判断元素是否在集合中。存在:返回1,不存在:返回0
sismember myset cc
#随机弹出一个元素
spop myset
#随机弹出指定个数元素
spop myset 2
#差集
sdiff myset1 myset2
#交集
sinter myset1 myset2
#并集
sunion myset1 myset2
#将交集结果存入到另一个集合中
#sdiffstore 存储结果的集合名 操作的集合一 操作的集合二
sdiffstore myset3 myset1 myset2
#将交集结果存入到另一个集合中
sinterstore myset4 myset1 myset2
#将并集结果存入到另一个集合中
sunionstore myset5 myset1 myset2
#将myset1中的aa元素移动到myset3
smove myset1 myset3 aa
5、zset(sorted set)
zadd zcard zrange zincrby zscore zinterstore zrangebyscore zrevrangebyscore
zrem zrank zremrangebyscore
#向有序集合中增加元素
#zadd 集合名 分数1 名称1 分数2 名称2 ...
zadd tuhaobang 10 zhangsan 80 lisi 30 wangwu
#返回插入的数量
#获取集合中元素的数量
zcard tuhaobang
#获取集合中指定区间的元素名称,如果后面的索引是-1,则返回所有元素名称
zrange tuhaobang 0 -1
1) "zhangsan"
2) "wangwu"
3) "lisi"
#获取集合所有的元素,包括名称和分数【是从小到大排序】
zrange tuhaobang 0 -1 withscores
1) "zhangsan"
2) "10"
3) "wangwu"
4) "30"
5) "lisi"
6) "80"
#获取集合前两位元素的名称和分数
zrange tuhaobang 0 1 withscores
1) "zhangsan"
2) "10"
3) "wangwu"
4) "30"
#为集合中指定的名称的元素增加分数
zincrby tuhaobang 50 zhangsan
#返回增加后的分数
#返回集合中指定名称的分数
zscore tuhaobang wangwu
#把myzset1和myzset2根据元素名称求出交集,并把相同名称的value加在一起,得到元素名称的新分数,存入到新集合中,成功返回的是交集的个数
#zinterstore 目标集合 操作集合的数量 集合一 集合二 ...
ZINTERSTORE myzset3 2 myzset1 myzset2
#zrangebyscore 集合名称 小分数 大分数 [withscores] [limit 第几条开始显示 显示数量]
#在不知道当前集合中最大值和最小值的情况下,-inf代表最小值 +inf代表最大值
#获取tuhaobang集合中所有元素名称及分数
zrangebyscore tuhaobang -inf +inf withscores
#获取tuhaobang集合中第一个元素名称及分数
zrangebyscore tuhaobang -inf +inf withscores limit 0 1
#获取tuhaobang集合中分数在50-100之间的所有元素名称及分数
zrangebyscore tuhaobang 50 100 withscores
#获取tuhaobang集合中分数在50-100之间的前两位元素名称及分数
zrangebyscore tuhaobang 50 100 withscores limit 0 2
#按从大到小的顺序进行排序,并获取前2位
zrevrangebyscore tuhaobang +inf -inf withscores limit 0 2
#根据元素名删除元素
zrem key member [member...]
#获取集合中指定元素名称对应的索引
zrank tuhaobang lisi
#删除指定分数区间的元素[10,20],删除成功返回删除的个数,否则返回0
zremrangebyscore tuhaobang 10 20
4、通用命令
- key相关
#查找匹配规则的key, *:代表0到多个字符,?代表一个字符
#查询所有key
keys *
#查询keys中第二个字母为a的key
keys ?a*
#判断key是否存在,存在:返回1,不存在:返回0
exists key
#删除key,删除成功返回1,删除不存在的key返回0
del key
#查看key剩余有效时间
#ttl key
ttl gender
结果:返回剩余有效时间,如果已经过期:返回-2,如果没有设置有效时间:返回-1
#设置已经存在的key的过期时间,单位为秒
expire key seconds
#为已经存在的key设置过期时间,单位是毫秒
pexpire key 毫秒
#查看指定key的剩余存活时间,单位是毫秒
pttl key
#移除指定key的生存时间,永久的持久化
persist key
#获取指定的key的value的数据类型
type key
#移动当前数据库中对应的key到其他数据库,dbindex是0-15
move key dbindex
- 数据库相关
#redis默认有16个数据库,分别是 db0 - db15
#查看当前数据库下有多少key
dbsize
#切换数据库,dbindex是0-15
select dbindex
#清空当前数据库
flushdb
#清空所有数据库中的数据
flushall
#实时监控Redis服务接收到的命令【其他客户端的操作,能够被监控到】
monitor
- 查看redis读写性能
#redis写的性能
redis-benchmark set
#redis读的性能
redis-benchmark get
- 上一篇:Redis笔记
- 下一篇:Redis源码剖析之压缩列表(ziplist)
相关推荐
- 【推荐】一个开源免费、AI 驱动的智能数据管理系统,支持多数据库
-
如果您对源码&技术感兴趣,请点赞+收藏+转发+关注,大家的支持是我分享最大的动力!!!.前言在当今数据驱动的时代,高效、智能地管理数据已成为企业和个人不可或缺的能力。为了满足这一需求,我们推出了这款开...
- Pure Storage推出统一数据管理云平台及新闪存阵列
-
PureStorage公司今日推出企业数据云(EnterpriseDataCloud),称其为组织在混合环境中存储、管理和使用数据方式的全面架构升级。该公司表示,EDC使组织能够在本地、云端和混...
- 对Java学习的10条建议(对java课程的建议)
-
不少Java的初学者一开始都是信心满满准备迎接挑战,但是经过一段时间的学习之后,多少都会碰到各种挫败,以下北风网就总结一些对于初学者非常有用的建议,希望能够给他们解决现实中的问题。Java编程的准备:...
- SQLShift 重大更新:Oracle→PostgreSQL 存储过程转换功能上线!
-
官网:https://sqlshift.cn/6月,SQLShift迎来重大版本更新!作为国内首个支持Oracle->OceanBase存储过程智能转换的工具,SQLShift在过去一...
- JDK21有没有什么稳定、简单又强势的特性?
-
佳未阿里云开发者2025年03月05日08:30浙江阿里妹导读这篇文章主要介绍了Java虚拟线程的发展及其在AJDK中的实现和优化。阅前声明:本文介绍的内容基于AJDK21.0.5[1]以及以上...
- 「松勤软件测试」网站总出现404 bug?总结8个原因,不信解决不了
-
在进行网站测试的时候,有没有碰到过网站崩溃,打不开,出现404错误等各种现象,如果你碰到了,那么恭喜你,你的网站出问题了,是什么原因导致网站出问题呢,根据松勤软件测试的总结如下:01数据库中的表空间不...
- Java面试题及答案最全总结(2025版)
-
大家好,我是Java面试陪考员最近很多小伙伴在忙着找工作,给大家整理了一份非常全面的Java面试题及答案。涉及的内容非常全面,包含:Spring、MySQL、JVM、Redis、Linux、Sprin...
- 数据库日常运维工作内容(数据库日常运维 工作内容)
-
#数据库日常运维工作包括哪些内容?#数据库日常运维工作是一个涵盖多个层面的综合性任务,以下是详细的分类和内容说明:一、数据库运维核心工作监控与告警性能监控:实时监控CPU、内存、I/O、连接数、锁等待...
- 分布式之系统底层原理(上)(底层分布式技术)
-
作者:allanpan,腾讯IEG高级后台工程师导言分布式事务是分布式系统必不可少的组成部分,基本上只要实现一个分布式系统就逃不开对分布式事务的支持。本文从分布式事务这个概念切入,尝试对分布式事务...
- oracle 死锁了怎么办?kill 进程 直接上干货
-
1、查看死锁是否存在selectusername,lockwait,status,machine,programfromv$sessionwheresidin(selectsession...
- SpringBoot 各种分页查询方式详解(全网最全)
-
一、分页查询基础概念与原理1.1什么是分页查询分页查询是指将大量数据分割成多个小块(页)进行展示的技术,它是现代Web应用中必不可少的功能。想象一下你去图书馆找书,如果所有书都堆在一张桌子上,你很难...
- 《战场兄弟》全事件攻略 一般事件合同事件红装及隐藏职业攻略
-
《战场兄弟》全事件攻略,一般事件合同事件红装及隐藏职业攻略。《战场兄弟》事件奖励,事件条件。《战场兄弟》是OverhypeStudios制作发行的一款由xcom和桌游为灵感来源,以中世纪、低魔奇幻为...
- LoadRunner(loadrunner录制不到脚本)
-
一、核心组件与工作流程LoadRunner性能测试工具-并发测试-正版软件下载-使用教程-价格-官方代理商的架构围绕三大核心组件构建,形成完整测试闭环:VirtualUserGenerator(...
- Redis数据类型介绍(redis 数据类型)
-
介绍Redis支持五种数据类型:String(字符串),Hash(哈希),List(列表),Set(集合)及Zset(sortedset:有序集合)。1、字符串类型概述1.1、数据类型Redis支持...
- RMAN备份监控及优化总结(rman备份原理)
-
今天主要介绍一下如何对RMAN备份监控及优化,这里就不讲rman备份的一些原理了,仅供参考。一、监控RMAN备份1、确定备份源与备份设备的最大速度从磁盘读的速度和磁带写的带度、备份的速度不可能超出这两...
你 发表评论:
欢迎- 一周热门
- 最近发表
- 标签列表
-
- oracle位图索引 (63)
- oracle批量插入数据 (62)
- oracle事务隔离级别 (53)
- oracle 空为0 (50)
- oracle主从同步 (55)
- oracle 乐观锁 (51)
- redis 命令 (78)
- php redis (88)
- redis 存储 (66)
- redis 锁 (69)
- 启动 redis (66)
- redis 时间 (56)
- redis 删除 (67)
- redis内存 (57)
- redis并发 (52)
- redis 主从 (69)
- redis 订阅 (51)
- redis 登录 (54)
- redis 面试 (58)
- 阿里 redis (59)
- redis 搭建 (53)
- redis的缓存 (55)
- lua redis (58)
- redis 连接池 (61)
- redis 限流 (51)