基于内存的分布式NoSQL数据库Redis(二)数据结构与通用命令

简介: 基于内存的分布式NoSQL数据库Redis(二)数据结构与通用命令

知识点05:Redis的数据结构及数据类型

  • step1:数据结构
  • step2:数据类型
  • 实施
  • 数据结构:整个Reids中**所有数据以KV结构形式**存在
  • K:作为唯一标识符,唯一标识一条数据,固定为String类型,写入时指定KV,读取时,根据K读取V
  • V:真正存储的数据,可以有多种类型
  • String、Hash、List、Set、Zset、BitMap、HypeLogLog
  • 理解Redis:类似于Java中的一个Map集合,可以存储多个KV,根据K获取V
  • 每一种类型的应用场景和命令都是不一样的
Key:String Value类型 Value值 应用场景
pv_20200101 String 10000 一般用于存储单个数据指标的结果
person001 Hash name:laoer age : 20 sex female 用于存储整个对象所有属性值
uv List {100,200,300,100,600} 有序允许重复的集合,每天获取最后一个值
uv_20200101 Set {userid1,userid2,userid3,userid4……} 无序且不重复的集合,直接通过长度得到UV
top10_product ZSet【score,element】 {10000-牙膏,9999-玩具,9998-电视……} 有序不可重复的集合,统计TopN
user_filter BitMap {0101010101010000000011010} 将一个字符串构建位,通过0和1来标记每一位
product_20200101 HypeLogLog {productid1,id2……} 类似于Set集合,底层实现原理不一样,数据量大的情况下,性能会更好,结果可能存在一定的误差

  • String类型
  • KV:【String,String】,类似于Java中Map集合的一条KV
  • Hash类型
  • KV:【String,Map集合】:Map集合的嵌套,Map集合中的元素是无序的
  • List类型
  • KV:【String,List】:有序且可重复
  • Set类型
  • KV:【String,Set】:无序且不重复
  • Zset类型
  • KV:【String,TreeMap集合】:Value也类似于Map集合,有序的Map集合
  • 类似于List和Set集合特点的合并:有序且不可重复
  • 小结
  • Redis中的数据是什么结构以及有哪些类型?
  • 数据结构:KV
  • K:String:唯一标识一条数据,用于获取Value
  • V:多种类型:存储的数据
  • Value的数据类型
  • String:Java字符串
  • 【String,String】:一般用于存储单个指标的结果
  • Hash:Java Map集合 / Python 中Dic
  • 【String,Map【k1v1,k2v2……】】
  • List:Java List集合:有序且可重复
  • 【String,List[1,2,3,4,5,6,6,7]】
  • Set:Java Set集合:无序且不可重复
  • 【String,Set[1,2,3,4,5]】
  • Zset:有序且不可重复
  • 【String,TreeMap【k1v1,k2v2 => 按照k排序】】
  • k:score:评分,默认按照评分对元素进行排序
  • v:元素,不能重复

知识点06:Redis的通用命令

  • 目标:掌握Redis常用的通用命令
  • 实施
  • keys:列举当前数据库中所有Key
  • 语法:keys 通配符
  • del key:删除某个KV
  • exists key :判断某个Key是否存在
  • type key:判断这个K对应的V的类型的
  • expire K 过期时间:设置某个K的过期时间,一旦到达过期时间,这个K会被自动删除
  • ttl K:查看某个K剩余的存活时间
  • select N:切换数据库的
  • Redis默认由16个数据:db0 ~ db15,个数可以通过配置文件修改,名称不能改
  • Redis是一层数据存储结构:所有KV直接存储在数据库中
  • 默认进入db0
  • move key N:将某个Key移动到某个数据库中
  • flushdb:清空当前数据库的所有Key
  • flushall:清空所有数据库的所有Key
node1:6379> keys *
1) "s1"
node1:6379> get s1
"hadoop"
node1:6379> set s2 hive
OK
node1:6379> get s2
"hive"
node1:6379> 
node1:6379> keys *
1) "s1"
2) "s2"
node1:6379> set a1 spark
OK
node1:6379> keys *
1) "a1"
2) "s1"
3) "s2"
node1:6379> keys a*
1) "a1"
node1:6379> keys s*
1) "s1"
2) "s2"
node1:6379> del s1
(integer) 1
node1:6379> keys *
1) "a1"
2) "s2"
node1:6379> exists s2
(integer) 1
node1:6379> exists s1
(integer) 0
node1:6379> 
node1:6379> hset m1 name zhangsan
(integer) 1
node1:6379> hset m1 age 18
(integer) 1
node1:6379> keys *
1) "m1"
2) "a1"
3) "s2"
node1:6379> type m1
hash
node1:6379> type s2
string
node1:6379> 
node1:6379> expire a1 20
(integer) 1
node1:6379> ttl a1
(integer) 17
node1:6379> ttl a1
(integer) 16
node1:6379> ttl a1
(integer) 15
node1:6379> ttl a1
(integer) 14
node1:6379> ttl a1
(integer) 13
node1:6379> ttl a1
(integer) 12
node1:6379> ttl a1
(integer) 11
node1:6379> ttl a1
(integer) 10
node1:6379> ttl a1
(integer) 9
node1:6379> keys *
1) "m1"
2) "s2"
node1:6379> 
node1:6379> select 1
OK
node1:6379[1]> select 10
OK
node1:6379[10]> select 0
OK
node1:6379> select 1
OK
node1:6379[1]> keys *
(empty list or set)
node1:6379[1]> set s1 hue
OK
node1:6379[1]> keys *
1) "s1"
node1:6379[1]> select 0
OK
node1:6379> 
node1:6379> keys *
1) "m1"
2) "s2"
node1:6379> move m1 1
(integer) 1
node1:6379> keys *
1) "s2"
node1:6379> select 1
OK
node1:6379[1]> keys *
1) "m1"
2) "s1"
node1:6379[1]> flushdb
OK
node1:6379[1]> keys *
(empty list or set)
node1:6379[1]> select 0
OK
node1:6379> keys *
1) "s2"
node1:6379> flushall
OK
node1:6379> keys *
(empty list or set)
node1:6379> 
  • 小结
  • 掌握Redis常用的通用命令


目录
相关文章
|
12月前
|
存储 负载均衡 NoSQL
【赵渝强老师】Redis Cluster分布式集群
Redis Cluster是Redis的分布式存储解决方案,通过哈希槽(slot)实现数据分片,支持水平扩展,具备高可用性和负载均衡能力,适用于大规模数据场景。
794 2
|
11月前
|
消息中间件 缓存 NoSQL
Redis各类数据结构详细介绍及其在Go语言Gin框架下实践应用
这只是利用Go语言和Gin框架与Redis交互最基础部分展示;根据具体业务需求可能需要更复杂查询、事务处理或订阅发布功能实现更多高级特性应用场景。
543 86
|
11月前
|
NoSQL Java 调度
分布式锁与分布式锁使用 Redis 和 Spring Boot 进行调度锁(不带 ShedLock)
分布式锁是分布式系统中用于同步多节点访问共享资源的机制,防止并发操作带来的冲突。本文介绍了基于Spring Boot和Redis实现分布式锁的技术方案,涵盖锁的获取与释放、Redis配置、服务调度及多实例运行等内容,通过Docker Compose搭建环境,验证了锁的有效性与互斥特性。
899 0
分布式锁与分布式锁使用 Redis 和 Spring Boot 进行调度锁(不带 ShedLock)
|
11月前
|
存储 消息中间件 NoSQL
Redis数据结构:别小看这5把“瑞士军刀”,用好了性能飙升!
Redis提供5种基础数据结构及多种高级结构,如String、Hash、List、Set、ZSet,底层通过SDS、跳表等实现高效操作。灵活运用可解决缓存、计数、消息队列、排行榜等问题,结合Bitmap、HyperLogLog、GEO更可应对签到、UV统计、地理位置等场景,是高性能应用的核心利器。
|
11月前
|
存储 缓存 NoSQL
工作 10 年!Redis 内存淘汰策略 LRU 和传统 LRU 差异,还傻傻分不清
小富带你深入解析Redis内存淘汰机制:LRU与LFU算法原理、实现方式及核心区别。揭秘Redis为何采用“近似LRU”,LFU如何解决频率老化问题,并结合实际场景教你如何选择合适策略,提升缓存命中率。
1396 3
|
11月前
|
存储 缓存 NoSQL
Redis基础命令与数据结构概览
Redis是一个功能强大的键值存储系统,提供了丰富的数据结构以及相应的操作命令来满足现代应用程序对于高速读写和灵活数据处理的需求。通过掌握这些基础命令,开发者能够高效地对Redis进行操作,实现数据存储和管理的高性能方案。
343 12
|
11月前
|
缓存 NoSQL 关系型数据库
Redis缓存和分布式锁
Redis 是一种高性能的键值存储系统,广泛用于缓存、消息队列和内存数据库。其典型应用包括缓解关系型数据库压力,通过缓存热点数据提高查询效率,支持高并发访问。此外,Redis 还可用于实现分布式锁,解决分布式系统中的资源竞争问题。文章还探讨了缓存的更新策略、缓存穿透与雪崩的解决方案,以及 Redlock 算法等关键技术。
|
11月前
|
存储 消息中间件 NoSQL
【Redis】常用数据结构之List篇:从常用命令到典型使用场景
本文将系统探讨 Redis List 的核心特性、完整命令体系、底层存储实现以及典型实践场景,为读者构建从理论到应用的完整认知框架,助力开发者在实际业务中高效运用这一数据结构解决问题。
|
11月前
|
存储 缓存 NoSQL
【Redis】 常用数据结构之String篇:从SET/GET到INCR的超全教程
无论是需要快速缓存用户信息,还是实现高并发场景下的精准计数,深入理解String的特性与最佳实践,都是提升Redis使用效率的关键。接下来,让我们从基础命令开始,逐步揭开String数据结构的神秘面纱。
|
存储 算法
非递归实现后序遍历时,如何避免栈溢出?
后序遍历的递归实现和非递归实现各有优缺点,在实际应用中需要根据具体的问题需求、二叉树的特点以及性能和空间的限制等因素来选择合适的实现方式。
456 59

热门文章

最新文章