首页 > 数据库 >redis-介绍

redis-介绍

时间:2022-10-12 16:34:04浏览次数:55  
标签:set 数据库 redis 介绍 内存 key 磁盘

1、前置知识常识
磁盘和内存中常识
1、寻址
内存中ns级别
磁盘中ms级别
2、带宽
磁盘:百兆到G的的级别,现在的固态硬盘可以达到1-3G中
io buffer
磁盘磁道、扇区,一个扇区是512byte,索引4k

2、为什么使用
1、常见的关系型数据库是硬盘型数据库、随着数据的的增加,磁盘的IO就成为了瓶颈,为了加快数据查询效率,于是有了数据分而治之和索引
2、为了加快查询速率引入了索引,但是索引本身也是数据,由此磁盘存储带来了一个致命的硬伤
3、SAP HAHA公司发明了内存数据库,和硬盘数据库相比,寻址效率高,相同的数据量下,内存级别比硬盘数据量小,但是内存数据库也有一个致命的缺点,就是太贵了
在做数据分析的时候,发现经常查询的数据其实只有一部分,也就是热点数据,那么我们是不是可以只把这部分放置到内存数据库中,相对于的我们产生了一个新的技术-redis

3、介绍
1、redis是一个开源的内存中的存储系统,它可以用作数据库,缓存,消息中间件,他支持多种数据结构类型
2、redis是健值对K-V型数据库

4、数据结构

--题外话:

memcached 也是K-V结构 但是value没有数据类型的概念
memcache 只有String ,存储复杂类型依赖于json.获取想要的值依赖于客户端 

redis 有多种数据类型,根据一些偏移可以直接拿到数据,根据偏移获取数据由redis-server处理 计算向数据移动
世界上只有三种数据结构
k=x,k=(x,y),  k = {x=y}   k=  [{},{}]
memcached 需要拿到全部的数据,然后再自行解析解吗
redis 可以根据类型获取数据(redis的server中每个类型都是自己的方法)-->计算向数据偏移

1、string 字符串
bitmap

SETBIT k2 1 offset value(二进制 0,1)
BITPOS
BITCOUNT
BITOP

使用场景:
1、统计用户登录天数
2、统计某天登陆的用户

字符类型

1、set 设置一个key
2、get
3、mset 设置多个key和value
4、append 往key后面添加value
5、getrange 获取key的范围
6、setrange (SETRANGE s5 0 4)将s5的下标0的值或改为4
7、srtlen 获取key的长度

数值类型

incr


2、hash 散列
hset/hmset
HKEYS
HVALS
HGETALL
HINCRBYFLOAT
3、list 列表
结构
head,tail
lpush
LRANGE
LPOP
LINDEX
LSET
LTRIM
4、set 集合
SADD
SMEMBERS
SINTER
SUNION
SRANDMEMBER
5、sorted set 有序集合

zadd
ZRANGE
ZRANGEBYSCORE
ZREVRANGE
ZUNIONSTORE
排序底层
双向链表
跳表
type/encoding

5、事务
exec

命令负责触发并执行事务中的所有命令
在redis缓冲区的队列中,谁的exec先到达,那么整个客户端的命令就先执行

watch

标记所有指定的key 被监视起来,在事务中有条件的执行(乐观锁)

6、lru算法缓存
回收策略
allkey-lru

回收使用 最少使用过的key(长时间没有使用的key)

volatilet-lru

在过期集合中,使用最少的key进行回收(如果大量的key设置了过期时间)
整体使用的次数少

过期时间
set k1 aaa ex 30

 

标签:set,数据库,redis,介绍,内存,key,磁盘
From: https://www.cnblogs.com/alomsc/p/16784938.html

相关文章

  • JVM 排查工具介绍(三)jmap
    一、基本知识jmap:主要用于打印指定Java进程(或核心文件、远程调试服务器)的共享对象内存映射或堆内存细节。 通常该命令是用来导出dump 文件 进行jvm 内存分析二......
  • 【每周NLP论文推荐】 介绍语义匹配中的经典文章
    欢迎来到《每周NLP论文推荐》。在这个专栏里,还是本着有三AI一贯的原则,专注于让大家能够系统性完成学习,所以我们推荐的文章也必定是同一主题的。语义匹配也是NLP中比较基础的......
  • 【redis】主从同步原理
    1.为什么需要主从同步在使用redis服务的时候如果时单机服务,一旦单机服务宕机了,那么可能导致我们整个系统处于不可用状态,或者当系统的访问量大了以后单机的redis服......
  • redis基础系列~单线程与多线程
    纯内存KV操作redis的操作都是在内存实现的,众所周知,在计算机的世界中,CPU的速度是远大于内存的速度的,同时内存的速度也是远大于硬盘的速度,所以非常快.所以内存的大小......
  • Java 集合系列06之 Vector详细介绍(源码解析)和使用示例
    概要学完arrayList和LinkedList之后,我们接着学习Vector第1部分Vector介绍Vector简介Vector是矢量队列,它是JDK1.0版本添加的类。继承于AbstractList,实现了List,RandomAcce......
  • Java 集合系列03之 ArrayList详细介绍(源码解析)和使用示例
    概要上一章,我们学习了Collection的架构。这一章开始,我们对Collection的具体实现类进行讲解;首先,讲解List,而List中ArrayList又最为常用。因此,本章我们讲解ArrayList。先对Arra......
  • 方法引用基本介绍与方法引用_通过对象名引用成员方法
    方法引用基本介绍在使用Lambda表达式的时候,我们实际上传递进去的代码就是一种解决方案∶拿什么参数做什么操作。那么考虑一种情况∶如果我们在Lambda中所指定的操作方......
  • 自注意力中的不同的掩码介绍以及他们是如何工作的?
    在研究自注意力时,有很多的名词需要我们着重的关注,比如填充掩码,前瞻掩码等等,但网上没有太多注意力掩码的教程和它是如何工作的信息,另外还有以下的细节需要详细的解释:为什......
  • Nebula Graph介绍和SpringBoot环境连接和查询
    NebulaGraph介绍和SpringBoot环境连接和查询转载请注明来源https://www.cnblogs.com/milton/p/16784098.html说明当前NebulaGraph的最新版本是3.2.1,根据官方的文档......
  • 数据库的基本概念和常见的数据库软件介绍
    数据库的基本概念1.数据库的英文单词:DataBase简称:DB2.什么是数据库?用于存储和管理数据的仓库3.数据库的特点持久化存储数据的,其实数据库就是一个文件系统方便存......