Redis学习笔记:基础知识

Redis学习笔记:基础知识一、NoSQL和关系型数据库区别 NoSQL非关系型数据库:Redis、MongoDB、HBase等,基于Key-Value存储,采用命令操作。 关系型数据库:Oracle、MySQL、DB2、SQL

Redis学习笔记:基础知识

    一、NoSQL和关系型数据库区别

    NoSQL非关系型数据库:Redis、MongoDB、HBase等,基于Key-Value存储,采用命令操作。

    关系型数据库:Oracle、MySQL、DB2、SQL Server等,基于表结构存储,采用SQL操作。

    二、Redis简介

    Redis是由意大利人Salvatore Sanfilippo(网名:antirez)开发的一款内存高速缓存数据库。Redis全称为: Remote Dictionary Server(远程数据服

务),该软件使用C语言编写,是典型的NoSQL数据库服务器。Redis是一个Key-Value存储系统,它支持丰富的数据类型,如String、Hash、List、Set、

Zset(Sorted Set)。

    三、Redis特点

    优点:

  • 性能极高:Redis能支持每秒10万读写频率。
  • 支持丰富的数据类型:包括String、Hash、List、Set、Zset(Sorted Set)等多种数据类型。
  • 原子性:所有操作都是原子性的(一起成功,或者一起失败)。
  • 支持持久化操作:将内存数据同步到数据文件中。
  • 提供了事务、消息传递等功能。

   缺点:

  • 由于是内存数据库,所以单台机器存储的数据量,取决于机器本身的内存大小。虽然Redis本身有Key过期策略,但是还是需要提前预估及节约

内存,如果内存增长过快,需要定期删除数据。

  • 如果进行完整重同步,由于需要生成rdb文件并进行传输,因此会占用主机的CPU并会消耗网络的带宽。虽然Redis 2.8版本已经有部分重同步的

功能,但是还是有可能完整重同步的,比如新上线的备机。

  • 修改配置文件后,重启将硬盘中的数据加载到内存时,时间比较久。在这个过程中,Redis不能提供服务。

    备注:

    在系统中,通常使用Redis做数据缓存使用。

    查询缓存:第一次查询时会从数据库中取出数据放入缓存,后续查询都将从缓存中读取数据。

    添加/更新缓存:将用户数据通过检测后放入缓存,然后给用户响应,后台开启线程取数据处理。

    四、Redis常用数据类型

    Redis常用的数据类型有5种,即String、Hash、List、Set、Zset(Sorted Set):

    String–字符串

    String是简单的Key-Value 类型,Value不仅可以是String,也可以是数字(当数字类型用Long可以表示的时候encoding就是整型,其它都存储在

sdshdr当做字符串),在List、Set和Zset中包含的独立的元素类型都是Redis String类型。String类型的Value最大为512MB。

    Hash–字典

    Hash是最接近关系型数据库结构的数据类型,可以将数据库中一条记录或程序中一个对象转换成hashmap存放在Redis中。在Memcached中,我们

经常将一些结构化的信息打包成hashmap,然后在客户端序列化后存储为一个字符串的值 (一般是JSON格式),比如用户的昵称、年龄、性别等。

Hash的键值对个数最多为2^32-1(4294967295)个。

    List–列表

    List说白了就是链表类型(双端链表),主要功能是push、pop、获取一个范围的所有值等,其中的Key可以理解为链表的名字。在Redis中,List就

是Redis String的列表,按照插入顺序进行排序,比如使用LPUSH命令在List头插入一个元素、使用RPUSH命令在List尾插入一个元素。当这两个命令

之一作用于一个空的Key时,一个新的List就创建出来了。List的元素个数最多为2^32-1(4294967295)个。

    Set–集合

    Set就是一个集合,集合的概念就是一堆不重复值的组合。利用Redis提供的Set数据结构,可以存储一些集合性的数据。在Redis中,Set就是Redis

String的无序集合,不允许有重复元素,对Set的操作有交集、并集、差集等。Set的元素个数最多为2^32-1(4294967295)个。

    ZSet(Sorted Set)–有序集合

    和Set相比,Sorted Set是将Set中的元素增加了一个权重参数score,使得集合中的元素能够按score进行有序排列,对于已经有序的Zset,仍然可以

使用SORT命令,通过指定ASC|DESC参数对其进行排序。Zset的元素个数最多为2^32-1(4294967295)个。

    五、Redis操作命令

    5.1、字符串操作

set key value       //设置value值
get key             //获取value值
strlen key          //获取value长度
incr key            //将value加1
incrby key i        //将value加i
decr key            //将value减1
decrby key i        //将value减i
append key value    //将原有key的值拼接上value值

代码100分

    5.2、哈希操作

代码100分hset key 字段名 字段值                 //设置一组
hmset key 字段名 字段值 字段名 字段值    //设置多组
hget key 字段名                       //获取一个字段值
hmget key 字段名1 字段名2              //获取多个字段值
hlen key                             //获取字段数量
hkeys key                            //查看字段名
hdel key 字段名                       //删除字段名

    5.3、列表操作

lpush key value                           //从头部放入值(key列表存在插入,不存在创建列表插入)
rpush key value                           //从尾部放入值
lpop key                                  //从头部删除一个元素
rpop key                                  //从尾部删除一个元素
lrem key count value                      //删除多少个值等于value的元素
lindex key index                          //获取index位置的value值
lrange key start end                      //获取指定范围的元素
linsert key before|after 元素 要插入的值    //插入元素
lset key index value                      //更新index位置的value值
llen key                                  //获取列表元素数

    5.4、集合操作

代码100分sadd key value value     //向集合添加元素
srem key value           //删除value元素
scard key                //获取集合元素数量
smembers key             //查看所有元素
srandmember key count    //获取count个随机数
sinter key1 key2         //两个集合交集,key1和key2都有
sunion key1 key2         //两个集合并集,去重复合并
sdiff key1 key2          //差集,key1有,key2没有

    5.5、有序集合

zadd key score value       //向集合添加元素
zrem key value             //删除元素
zcard key                  //元素数量
zrange key start end       //获取指定范围的元素(小到大)
zrevrange key start end    //获取指定范围的元素(大到小)
zrevrank key value         //获取value索引(大到小)
zrank key value            //获取value索引(小到大)

    5.6、key操作

keys pattern         //查看key
del key              //删除key
expire key time      //设置有效时间(秒)
type key             //判断value值类型
rename key newkey    //修改key名称

    六、Redis文件格式

    Redis使用了两种文件格式:全量数据和增量请求。

    全量数据:是把内存中的数据写入磁盘,便于下次读取文件时进行加载。

    增量请求:是把内存中的数据序列化为操作请求,用于读取文件进行replay得到数据,序列化的操作包括SET、RPUSH、SADD、ZADD。

    备注:Redis的存储分为内存存储、磁盘存储和log文件三部分,配置文件中有三个参数对其进行配置。

    七、Redis应用场景

    (1)会话缓存(Session Cache)

    (2)全页缓存(FPC)

    (3)队列

    (4)排行榜/计数器

    (5)发布/订阅

 

    参考自:

    https://blog.csdn.net/weixin_39671217/article/details/78021732

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
转载请注明出处: https://daima100.com/9768.html

(0)
上一篇 2023-02-01
下一篇 2023-02-01

相关推荐

  • HDFS数据存储流程[通俗易懂]

    HDFS数据存储流程[通俗易懂]HDFS即Hadoop Distributed File System, HDFS存储数据的流程如下: 1、client跟NameNode交互1.1、client 发消息给NameNode,NameN

    2023-04-19
    151
  • numpy库的常用功能及作用

    numpy库的常用功能及作用随着数据处理需求越来越高,Python的数据处理技术也不断发展,其中的numpy库就是非常重要的一部分。numpy是Python的一个重要扩展库,提供了多维数组(ndarray)的数据结构和一系列的运算函数,是Python进行科学计算的重要工具库之一。在数据处理、机器学习、深度学习等应用场合,numpy都有其独特的应用。

    2024-06-26
    58
  • Spark Streaming,Flink,Storm,Kafka Streams,Samza:如何选择流处理框架

    Spark Streaming,Flink,Storm,Kafka Streams,Samza:如何选择流处理框架根据最新的统计显示,仅在过去的两年中,当今世界上90%的数据都是在新产生的,每天创建2.5万亿字节的数据,并且随着新设备,传感器和技术的出现,数据增长速度可能会进一步加快。 从技术上讲,这意味着我们的

    2023-03-09
    151
  • Python Tkinter窗口设计

    Python Tkinter窗口设计Tkinter是一个Python的标准GUI库,它可以创建各种应用程序的窗口和交互式界面。Tkinter提供了许多内置的控件和布局选项,如按钮、文本框和下拉列表。

    2024-01-15
    97
  • MySQL创建用户与授权「建议收藏」

    MySQL创建用户与授权「建议收藏」一. 创建用户 命令: CREATE USER 'username'@'host' IDENTIFIED BY 'password'; 说…

    2023-03-10
    155
  • 以Python运行Shell命令

    以Python运行Shell命令在日常的开发和运维过程中,我们经常需要执行一些命令行操作。Shell命令是Linux/Unix操作系统中非常常见的一种命令行操作方式。Python作为一种脚本编程语言,也提供了丰富的执行Shell命令的方式。

    2024-07-05
    53
  • 1. MySQL体系结构——InnoDB存储引擎表、页结构、行记录格式「终于解决」

    1. MySQL体系结构——InnoDB存储引擎表、页结构、行记录格式「终于解决」本章将重点分析表的物理存储特征,即数据在表中是如何组织存放的。也就是说,表就是关于特定实体的数据集合,这也是关系型数据库模型的核心。 4.1 索引组织表 在 InnoDB存储引擎中,表都是按照主键顺序

    2023-02-17
    184
  • 利用Python while语句实现循环控制

    利用Python while语句实现循环控制Python中的while语句是一种常见的循环控制语句,它允许程序根据特定条件反复执行一个代码块。while语句的基本形式如下所示:

    2024-02-19
    91

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注