对Redis的理解(1)

什么是redis?为什么要用redis?

Redis,英文全称是Remote Dictionary Server(远程字典服务),是一个开源的使用ANSI C语言编写、支持网络、可基于内存亦可持久化的日志型、Key-Value数据库,并提供多种语言的API。

redis与mysql最大的不同就在于它的的数据都在内存中,读写速度非常快。所以广泛应用于缓存,另外,Redis也经常用来做分布式锁。除此之外,Redis支持事务、持久化、LUA 脚本、LRU 驱动事件、多种集群方案。

redis为什么那么快呢?

Redis之所以如此快速,有以下几个主要原因:

  1. 内存存储:Redis主要将数据存储在内存中,而不是像传统的关系型数据库一样存储在磁盘上。内存的读写速度比磁盘快几个数量级,这使得Redis能够实现非常低延迟的数据访问。

  2. 简单的数据结构:Redis采用了简单的键值存储模型,可以直接根据键快速检索数据。与复杂的查询语言相比,这种简单的数据结构使得Redis能够以非常高的速度执行基本操作,如插入、更新和查找。

  3. 单线程架构:Redis通常以单线程的方式运行。这意味着它不需要进行线程间的锁定和同步操作,避免了多线程并发带来的开销和竞争条件。单线程架构简化了Redis的内部实现,使其能够更高效地执行操作。

  4. 非阻塞IO:Redis使用非阻塞的IO模型,它能够处理大量的并发连接而不会阻塞其他请求。它采用事件驱动的方式,通过使用事件轮询机制,能够高效地处理客户端请求和响应。

  5. 良好的数据结构支持:Redis提供了丰富的数据结构,如字符串、列表、哈希、集合和有序集合。这些数据结构在内部都经过了高度优化,使得Redis能够高效地执行各种操作,如插入、删除、查找和排序。

redis的数据结构类型

  • String(字符串)

        介绍:String是Redis最基础的数据结构类型,它是二进制安全的,可以存储图片或者序列化的对象,值最大存储为512M

        作用于:缓存、分布式ID、分布式锁、全局session、全局计数器

        语法:set key value、get key等

127.0.0.1:6379> set name zhangsan
OK
127.0.0.1:6379> get name
"zhangsan"
127.0.0.1:6379>
  • Hash(哈希)

        介绍:在Redis中,哈希类型是指v(值)本身又是一个键值对(k-v)结构

        作用于:保存对象的多个属性

        语法:hset key field value、hget key field 

127.0.0.1:6379> hmset per name zhangsan age 19 sex nan
OK
127.0.0.1:6379> hgetall per
1) "name"
2) "zhangsan"
3) "age"
4) "19"
5) "sex"
6) "nan"
127.0.0.1:6379>
  • List(列表)

        介绍:列表(list)类型是用来存储多个有序的字符串,一个列表最多可以存储2^32-1个元素

         作用于:

  1. 模拟数组、栈、队列等数据结构

  2. 线型结构,如:粉丝、点赞列表

  3. 消息队列

​​​​​​​

        语法:lpush key value [value ...]、lrange key start end

127.0.0.1:6379> rpush list 0
(integer) 1
127.0.0.1:6379> rpush list 1 2 3 4 5
(integer) 6
127.0.0.1:6379> lrange list 0 10
1) "0"
2) "1"
3) "2"
4) "3"
5) "4"
6) "5"
127.0.0.1:6379>
  • Set(集合)

        介绍:集合(set)类型也是用来保存多个的字符串元素,但是不允许重复元素

         作用于:点赞数(不会重复)、共同好友(交集、并集、差集)

        语法:sadd key element [element ...] 、smember key

127.0.0.1:6379> sadd school zhangsan
(integer) 1
127.0.0.1:6379> sadd school lisi
(integer) 1
127.0.0.1:6379> sadd school wangwu
(integer) 1
127.0.0.1:6379> smembers school
1) "wangwu"
2) "lisi"
3) "zhangsan"
127.0.0.1:6379>
  • zset(有序集合)

        介绍:已排序的字符串集合,同时元素不能重复

        作用于:排行榜

        语法:zadd key score member [score member ...],zrank key member

127.0.0.1:6379> zadd student 0 zhangsan
(integer) 1
127.0.0.1:6379> zadd student 1 wangwu
(integer) 1
127.0.0.1:6379> zrangebyscore student 0 10
1) "zhangsan"
2) "wangwu"
127.0.0.1:6379>

总结:

        Redis是一种功能强大的内存数据库,它通过存储数据在内存中并支持灵活的数据结构,提供了快速、可靠和高效的数据存储和检索。它在提高应用程序性能和处理大量数据时非常有用,因此被广泛应用于各种应用程序和网站中。

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值