首页 > 数据库 >【Redis二】Redis数据类型

【Redis二】Redis数据类型

时间:2024-06-30 22:00:00浏览次数:18  
标签:127.0 0.1 redis 元素 数据类型 6379 integer Redis

目录

一.Redis数据类型分布

二.字符串类型string 

1.概述

2.操作

三.列表list

1.概述

2.操作

四.哈希hash

1.概述

2.操作

五.无序集合set

1.概述

2.应用范围

3.操作

六.有序集合zset

1.概述

2.应用范围

3.操作

七.通用命令


一.Redis数据类型分布

通常Redis的数据类型有五大基础类型(常用)

  • String(字符串)  
  • List(列表)    
  • Hash(哈希/散列)    
  • Set(无序集合)  
  •  Zset/Sorted Set(有序集合)

此外还有其他的,三种特殊的数据类型

  • HyperLogLogs(基数统计)  
  • Bitmaps (位图)  
  • geospatial (地理位置)

二.字符串类型string 

1.概述

  • String是redis最基本的类型,最大能存储512MB的数据,String类型是二进制安全的,即可以存储任何数据、比如数字、图片、序列化对象等

2.操作

set 键 值
get 键
setex 键 秒数 值        #创建键并设置过期时间
incr 键                #数字递增+1
decr 键                #数字递减-1
STRLEN 键              #统计键值的字符长度
mset 键1 值1 键2 值2
mget 键1 键
redis 127.0.0.1:6379> exists mykey                        #判断该键是否存在,存在返回1,否则 
                                                          返回0。
(integer) 0        
redis 127.0.0.1:6379> append mykey "hello"                #该键并不存在,因此append命令返回当 
                                                          前Value的长度。
(integer) 5        
redis 127.0.0.1:6379> append mykey " world"               #该键已经存在,因此返回追加后Value 
                                                          的长度。
(integer) 11
redis 127.0.0.1:6379> get mykey                           #通过get命令获取该键,以判断append 
                                                          的结果。
"hello world"
redis 127.0.0.1:6379> set mykey "this is a test"          #通过set命令为键设置新值,并覆盖原 
                                                          有值。
OK
redis 127.0.0.1:6379> get mykey
"this is a test"
redis 127.0.0.1:6379> strlen mykey                        #获取指定Key的字符长度。
(integer) 14

三.列表list

1.概述

  • 列表的元素类型为string,按照插入顺序排序,在列表的头部或尾部添加元素

2.操作

lpush 键 值1 值2 ....                #从左边开始插入元素
rpush 键 值1 值2 ....                #从右边开始插入元素
lrange 键 起始位置  终止位置          #起始位置 0表示左边开始的第一个元素,终止位置 -1表示到最后一个元素
lpop 键                              #显示并删除左边第一个元素
rpop 键                              #显示并删除右边第一个元素
lrem 键 N 值                         #从左边开始删除N个指定元素
llen 键                              #统计元素的数量
lindex 键 元素位置                   #查看第N个元素的值
linsert 键 before|after 元素 值      #在指定元素前|后插入
redis 127.0.0.1:6379> del mykey
(integer) 1
redis 127.0.0.1:6379> lpush mykey a b c d    #mykey键并不存在,该命令会创建该键及与其关联的List,之后在将参数中的values从左到右依次插入。
(integer) 4
redis 127.0.0.1:6379> lrange mykey 0 2        #取从位置0开始到位置2结束的3个元素。
1) "d"
2) "c"
3) "b"
redis 127.0.0.1:6379> lrange mykey 0 -1       #取链表中的全部元素,其中0表示第一个元素,-1表示最后一个元素。
1) "d"
2) "c"
3) "b"
4) "a"
redis 127.0.0.1:6379> lpushx mykey2 e         #mykey2键此时并不存在,因此lpushx命令将不会进行任何操作,其返回值为0。
(integer) 0
redis 127.0.0.1:6379> lrange mykey2 0 -1     #可以看到mykey2没有关联任何List Value。
(empty list or set)
redis 127.0.0.1:6379> lpushx mykey e          #mykey键此时已经存在,所以lpushx命令插入成功,并返回链表中当前元素的数量。
(integer) 5
redis 127.0.0.1:6379> lrange mykey 0 0        #获取该键的List Value的头部元素。
1) "e"

四.哈希hash

1.概述

  • hash用于存储对象。可以采用这样的命名方式:对象类别和ID构成键名,使用字段表示对象的属性,而字段值则存储属性值。 如:存储 ID 为 2 的汽车对象
  • 如果Hash中包含很少的字段,那么该类型的数据也将仅占用很少的磁盘空间。每一个Hash可以存储4294967295个键值对

2.操作

hset 键 字段 值
hmset 键 字段1 值1 字段2 值2 ....
hget 键 字段
hkeys 键                            #查看所有的字段
hvals 键                            #查看所有字段的值
hdel 键 字段                        #删除指定字段
redis 127.0.0.1:6379> hset myhash field1 "zhang"        #给键值为myhash的键设置字段为field1,值为zhang。
(integer) 1
redis 127.0.0.1:6379> hget myhash field1                #获取键值为myhash,字段为field1的值。
"zhang"
redis 127.0.0.1:6379> hget myhash field2                #myhash键中不存在field2字段,因此返回nil。
(nil)
redis 127.0.0.1:6379> hset myhash field2 "san"          #给myhash添加一个新的字段field2,其值为san。
(integer) 1
redis 127.0.0.1:6379> hlen myhash                       #hlen命令获取myhash键的字段数量。
(integer) 2
redis 127.0.0.1:6379> hexists myhash field1             #判断myhash键中是否存在字段名为field1的字段,由于存在,返回值为1。
(integer) 1
redis 127.0.0.1:6379> hdel myhash field1                #删除myhash键中字段名为field1的字段,删除成功返回1。
(integer) 1
redis 127.0.0.1:6379> hdel myhash field1                #再次删除myhash键中字段名为field1的字段,由于上一条命令已经将其删除,因为没有删除,返回0。
(integer) 0
redis 127.0.0.1:6379> hexists myhash field1             #判断myhash键中是否存在field1字段,由于上一条命令已经将其删除,因为返回0。
(integer) 0
redis 127.0.0.1:6379> hsetnx myhash field1 zhang        #通过hsetnx命令给myhash添加新字段field1,其值为zhang,因为该字段已经被删除,所以该命令添加成功并返回1。
(integer) 1
redis 127.0.0.1:6379> hsetnx myhash field1 zhang        #由于myhash的field1字段已经通过上一条命令添加成功,因为本条命令不做任何操作后返回0。
(integer) 0

五.无序集合set

1.概述

  • 无序集合,元素类型为String类型,元素具有唯一性,不允许存在重复的成员。多个集合类型之间可以进行并集、交集和差集运算

2.应用范围

  • 可以使用Redis的Set数据类型跟踪一些唯一性数据,比如访问某一博客的唯一IP地址信息。对于此场景,我们仅需在每次访问该博客时将访问者的IP存入Redis中,Set数据类型会自动保证IP地址的唯一性
  • 充分利用Set类型的服务端聚合操作方便、高效的特性,可以用于维护数据对象之间的关联关系。比如所有购买某一电子设备的客户ID被存储在一个指定的Set中,而购买另外一种电子产品的客户ID被存储在另外一个Set中,如果此时我们想获取有哪些客户同时购买了这两种商品时,Set的intersections命令就可以充分发挥它的方便和效率的优势了

3.操作

sadd 键 值1 值2 ....         #元素不能重复
smembers 键                  #查看元素,无序的
srem 键 值1 值2 ...          #删除指定的元素
srandmember 键 N             #随便显示N个元素
scard 键                     #统计元素的数量
spop 键                      #随机显示并删除一个元素
smove 键1 键2 值             #将键1的元素移动到键2中
sinter 键1 键2               #求键1与键2的交集
sdiff 键1 键2                #求键1与键2的差集
sunion 键1 键2               #求键1与键2的并集
redis 127.0.0.1:6379> sadd myset a b c        
#插入测试数据,由于该键myset之前并不存在,因此参数中的三个成员都被正常插入。
(integer) 3
redis 127.0.0.1:6379> sadd myset a d e        
#由于参数中的a在myset中已经存在,因此本次操作仅仅插入了d和e两个新成员。
(integer) 2
redis 127.0.0.1:6379> sismember myset a       
 #判断a是否已经存在,返回值为1表示存在。
(integer) 1
redis 127.0.0.1:6379> sismember myset f        
#判断f是否已经存在,返回值为0表示不存在。
(integer) 0
redis 127.0.0.1:6379> smembers myset        
#通过smembers命令查看插入的结果,从结果可以看出,输出的顺序和插入顺序无关。
1) "c"
2) "d"
3) "a"
4) "b"
5) "e"
redis 127.0.0.1:6379> scard myset            
#获取Set集合中元素的数量。
(integer) 5

六.有序集合zset

1.概述

  • a、有序集合,元素类型为Sting,元素具有唯一性,不能重复
  • b、每个元素都会关联一个double类型的分数score(表示权重),可以通过权重的大小排序,元素的score可以相同

2.应用范围

  • 可以用于一个大型在线游戏的积分排行榜。每当玩家的分数发生变化时,可以执行ZADD命令更新玩家的分数,此后再通过ZRANGE命令获取积分TOP10的用户信息。当然我们也可以利用ZRANK命令通过username来获取玩家的排行信息。最后我们将组合使用ZRANGE和ZRANK命令快速的获取和某个玩家积分相近的其他用户的信息
  • Sorted-Set类型还可用于构建索引数据

3.操作

zadd 键 权重1 值1  权重2 值2  ....                  #score权重是可以重复的,元素值是不可以重复的
zrange 键  起始位置  终止位置 [withscores]          #起始位置 0表示左边开始的第一个元素,终止位置 -1表示到最后一个元素
zrangebyscore 键 起始权重  终止权重 [limit N M]     #查看指定权重范围的元素,按score从小到大,limit N M 表示只显示第N个之后的M个元素(不包括第N个元素)
zrevrange 键  起始位置  终止位置                    #降序查看
zrevrangebyscore 键 起始权重  终止权重 [limit N M]  #按score从大到小查看
zcard 键                                           #统计元素的数量
zcount 键 起始权重  终止权重                        #统计指定权重范围的元素数量
zrem 键  值1 值2 ...                               #删除指定的元素
zincrby 键 权重 值                                 #添加新的元素或增加指定元素的权重
redis 127.0.0.1:6379> del myzset
(integer) 1
redis 127.0.0.1:6379> zadd myzset 1 one 2 two 3 three 4 four
(integer) 4
redis 127.0.0.1:6379> zrangebyscore myzset 1 2        
#zrangebyscore key min max,获取分数 满足表达式1 <= score <= 2的成员。
1) "one"
2) "two"
redis 127.0.0.1:6379> zrangebyscore myzset (1 2            
#获取分数满足表达式1 < score <= 2的成员。
1) "two"
redis 127.0.0.1:6379> zrangebyscore myzset -inf +inf limit 2 3        
#-inf表示第一个成员(位置索引值最低的,即0),+inf表示最后一个成员(位置索引值最高的),limit后面的参数用于限制返回成员的值,2表示从位置索引等于2的成员开始,取后面3个成员。
1) "three"
2) "four"
redis 127.0.0.1:6379> zrangebyscore myzset 0 4 limit 2 3
 
redis 127.0.0.1:6379> zremrangebyscore myzset 1 2        
#删除分数满足表达式1 <= score <= 2的成员,并返回实际删除的数量。
(integer) 2
redis 127.0.0.1:6379> zrange myzset 0 -1                
#看出一下上面的删除是否成功。
1) "three"
2) "four"
redis 127.0.0.1:6379> zremrangebyrank myzset 0 1        
#删除位置索引满足表达式0 <= rank <= 1的成员。
(integer) 2
redis 127.0.0.1:6379> zcard myzset                        
#查看上一条命令是否删除成功。
(integer) 0

七.通用命令

通用
type 键                                      查看键的数据类型
keys 键 * ?                                  查询键名,支持通配符 * ?
exists 键                                    判断键是否存在
expire 键 过期时间                            为已存在的键设置过期时间
setex 键 过期时间 值                          创建string类型的键并设置过期时间
ttl 键                                       查看键的生命周期时间,-1 永不过期,-2 已过期
rename 旧键 新键                             重命名键名,会覆盖已存在的键
renamenx 旧键 新键                           重命名键名,不会覆盖已存在的键
dbsize                                       统计当前库中键的总数
config set requirepass '密码'                设置/修改redis密码
config get requirepass                       查看密码
auth '密码'                                  在redis里验证密码
select 库ID                                  切换库,默认库ID为 0~15
move 键 库ID                                 移动键到指定的库
flushdb                                      清空当前库(慎用)
flushall                                     清空所有库(慎用)

标签:127.0,0.1,redis,元素,数据类型,6379,integer,Redis
From: https://blog.csdn.net/F12138X/article/details/140035661

相关文章

  • “了解MySQL中的enum枚举数据类型“
    目录#开篇1.创建包含枚举类型的表2.插入枚举类型的数据3.查询包含枚举类型的表4.更新枚举类型的数据5.使用枚举类型的好处注意事项示例总结附加#开篇        在数据库中,枚举(ENUM)是一种数据类型,用于存储一组预定义的值。这在某些情况下非常有用,例如......
  • 关于锁的使用,千万不要踩这个坑!(附带Synchronized详解和ZooKeeper、Redis等分布式锁详解
    1、分布式锁在分布式系统中,我们经常会使用各种锁来保证数据的一致性和并发安全。一些常见的分布式锁实现包括:基于ZooKeeper的分布式锁:使用ZooKeeper节点的特性来实现分布式锁。基于Redis的分布式锁:利用Redis的原子性操作和过期时间特性来实现分布式锁。Redlock算法:由......
  • Redis常见的16个使用场景
    1、缓存String类型例如:热点数据缓存(例如报表、明星出轨),对象缓存、全页缓存、可以提升热点数据的访问数据。2、数据共享分布式String类型,因为Redis是分布式的独立服务,可以在多个应用之间共享例如:分布式Session<dependency><groupId>org.springframework.session</gr......
  • 基本数据类型之列表***
    先来总结下数据类型数字、字符串、布尔型、列表、元组、字典、集合可变数据类型:列表、字典、集合--所谓可变就是可以被修改,且修改后在内存中id不变不可变数据类型:字符串、元组、数字有序:字符串、列表、元组**获取元素的方法包括:索引、切片、for循环无序:字典、集合其中数字......
  • SpringBoot集成redis配置文件不生效踩坑记录
    SpringBoot版本<parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>3.1.2</version></parent>导入spring-boot-stater-data-redis依赖<depen......
  • Redis 高性能基本操作
    单元素操作是基础单元素操作,是指每一种集合类型对单个数据实现增删改查例如,Hash类型的HGET、HSET和HDEL,Set类型的SADD、SREM、SRANDMEMBER等这些操作的复杂度由集合采用的数据结构决定,例如,HGET、HSET和HDEL是对哈希表做操作,所以它们的复杂度都是O(1)Set类型用......
  • 最全Redis数据库Linux安装
    概念所有的I/O操作全在内存中进行,速度非纯快,性能非常搞。如果断电或停止服务,数据就会消失,而内存型数据库恰好可以弥补类似于MySQL等关系型数据库在硬盘当中进行I/O操作的速度上的局限。redis是key-values键值对的存储格式,非关系型安装过程安装redis数据库之前确保在Linux......
  • 2.创建表和数据类型
    --切换数据库useDBTESTifexists(select*fromsys.tableswherename='Department'andtype='U')----如果有这个名称(DBTES)的数据库,并且type的值为U(用户创建的)droptableDepartment--删除表--类型:--char:定长,char(10),无论存储的数据是否到了10个字节,都要占用10......
  • Redis入门
    目录Redis简介Redis下载启动Redis服务客户端连接 Redis数据类型Redis常用命令字符串操作命令SETkeyvalue        设置指定key的值GETkey        获取指定key的值SETEXkeysecondsvalue        设置指定key的值,并将key的过期时间设......
  • Hyperf redis 异步队列使用
    config/autoload/processes.phpuseApp\Book\Process\CreateQrcodeComsumer;return[Mine\Crontab\MineCrontabProcess::class,Hyperf\AsyncQueue\Process\ConsumerProcess::class,CreateQrcodeComsumer::class//增加自定义的异步队列类];由于hyper......