redis的介绍与简单使用

目录

一、简介

二、redis的5种基本数据类型介绍

1.字符串String类型:

2.列表list:

3.散列hash:

4.集合set:

5.有序集合zset:

三、redis作为缓存会遇到的问题

1.缓存穿透:

2.缓存击穿:

3.缓存雪崩:


一、简介

redis是一种完全开源的非关系型key_value数据库,很多公司也叫其为缓存数据库,为什么这么称号呢?就是因为很多公司都是通过高可用redis集群去实现项目上缓存数据的目的。

为什么 用redis作为缓存呢?有的公司用memcached。首先就是因为redis的读写速度非常快,其次redis有多种数据结构供选择,不仅如此,Redis还有原生的集群模式;

对于数据量大,很少修改且经常查询的数据,就可以放到缓存中,比如我们系统中最常用的用户角色权限就经常放到缓存中。

除了作为缓存使用,在分布式系统中,redis还经常被用作分布式锁来控制分布式程序的执行。

作为缓存数据库,redis有以下几个特点:

1.redis支持持久化,可以将内存中数据放到磁盘中,即使redis重启,数据存在,可以加载继续使用。

2.redis支持的数据类型有5种,除了基本的key_value类型的数据,还有list,set,zset,hash等4种数据结构形式,

3.redis还可以设置数据过期时间,到期后数据自动清除。

4.redis也支持主从备份,使用master_slave模式可以实现主从备份。

5.Redis的性能极高-理论上的读速度是110000次/s,写速度是81000次/s

6.灾难恢复,redis数据丢失了可以用过aof进行恢复


二、redis的5种基本数据类型介绍

我们先在redis中添加一些数据,然后用桌面管理工具RedisDesktopManager来看下数据的样式

1.字符串String类型:

特点:由字节组成的序列,是最基本的一种类型。

redis 127.0.0.1:6379> SET string_demo "hello world"
OK
redis 127.0.0.1:6379> GET string_demo 
"hello world"

2.列表list:

特点:由多个字符串值组成的有序可重复的序列,链表结构。

redis 127.0.0.1:6379> lpush listdemo redis
(integer) 1
redis 127.0.0.1:6379> lpush listdemo mongodb
(integer) 2
redis 127.0.0.1:6379> lpush listdemo rabbitmq
(integer) 3
redis 127.0.0.1:6379> lrange listdemo 0 10
1) "rabbitmq"
2) "mongodb"
3) "redis"

3.散列hash:

特点:类似Map<String,String>的容器,可以将多个的key_value形似的键值对数据存储到一个指定的key。每个hash可以存储4294967295个键值对。

redis 127.0.0.1:6379> HMSET hashdemo book1 "abc" book2 "def"
"OK"
redis 127.0.0.1:6379> HGET hashdemo book1 
"abc"
redis 127.0.0.1:6379> HGET hashdemo book2 
"def"

4.集合set:

特点:无序且不可重复

redis 127.0.0.1:6379> sadd runoob redis
(integer) 1
redis 127.0.0.1:6379> sadd runoob php
(integer) 1
redis 127.0.0.1:6379> sadd runoob java
(integer) 1
redis 127.0.0.1:6379> smembers runoob
1) "php"
2) "redis"
3) "java"

5.有序集合zset:

特点:和set类似,不允许重复,特点是每个成员都会有一个分数与之关联

redis 127.0.0.1:6379> zadd zsetdemo 70 go
(integer) 1
redis 127.0.0.1:6379> zadd zsetdemo 80 redis
(integer) 1
redis 127.0.0.1:6379> zadd zsetdemo 90 java
(integer) 1
redis 127.0.0.1:6379> zadd zsetdemo 100 mysql
(integer) 0


到此,redis的5种基本数据结构就介绍完了,但是,在实际项目中使用redis并不是那么简单,需要根据具体的业务类型来决定选择什么样的数据结构来进行缓存。

三、redis作为缓存会遇到的问题

1.缓存穿透:

简单的说就是每次查询redis缓存都没查到,导致去mysql等数据库查询,给数据库增加了压力。

2.缓存击穿:

短时间超高并发访问某个缓存的值,但是刚好缓存到了失效的时间了,导致大量的请求访问到数据库上。

3.缓存雪崩:

某一个时间段,缓存集中过期失效。

其实,以上三种问题归根到底,都是属于缓存没有发挥出应有的作用,导致数据库的压力变大,可能造成数据库崩溃或宕机。

针对以上几种问题的解决办法网上有很多,感兴趣的伙伴不防尝试一下。

猜你喜欢

转载自blog.csdn.net/qq_37488998/article/details/112692429