学习笔记之Redis学习(一):Redis介绍、单机版的安装、数据类型的介绍

一、Redis 介绍

以下总结了关于Redis比较全面的知识笔记以及面试题,方便自己复习的同时希望对大家有所帮助。

序号内容链接地址
1Redis的基础知识、单机版安装、数据类型介绍(老版本)https://blog.csdn.net/weixin_43246215/article/details/107474283
2Redis常用命令、配置文件介绍、数据持久化方式、集群搭建 (老版本)https://blog.csdn.net/weixin_43246215/article/details/107947562
3Redis的五种常用数据类型、三种特殊数据类型详解https://blog.csdn.net/weixin_43246215/article/details/108041739
4Redis基本的事务操作以及使用Redis实现乐观锁https://blog.csdn.net/weixin_43246215/article/details/108045931
5使用JedisAPI操作Redis以及Jedis实现Redis事务https://blog.csdn.net/weixin_43246215/article/details/108067542
6Redis的配置文件详解(中文)https://blog.csdn.net/weixin_43246215/article/details/108068245
7Redis数据持久化的两种方式以及Redis实现订阅发布https://blog.csdn.net/weixin_43246215/article/details/108068797
8Redis的伪集群搭建以及主从复制原理https://blog.csdn.net/weixin_43246215/article/details/108069472
9Redis中哨兵(Sentinel)模式的使用以及相关配置介绍https://blog.csdn.net/weixin_43246215/article/details/108088179
10Redis中的缓存穿透、缓存击穿以及缓存雪崩(理论知识)https://blog.csdn.net/weixin_43246215/article/details/108089026
11Spring整合Redis实现查询缓存以及同步缓存待更新
12SpringBoot整合Redis以及自定义Redis Templatehttps://blog.csdn.net/weixin_43246215/article/details/108476328
13Redis常见面试题https://blog.csdn.net/weixin_43246215/article/details/108090095
14待更新

1、Redis 简介

Remote Dictionary Server(Redis)是一个开源的使用 ANSI C 语言编写、支持网络、可基于内存亦可持久化的日志型、Key-Value 数据库,并提供多种语言的 API。
它通常被称为数据结构服务器,因为值(value)可以是 字符串(String), 哈希(Map),列表(list), 集合(sets) 和 有序集合(sorted sets)等类型。

2、Redis 的特点

(1) 支持多种数据结构,如 string(字符串)、 list(双向链表)、dict(hash 表)、set(集合)、zset(排序 set)、hyperloglog(基数估算)
(2)支持持久化操作,可以进行 aof 及 rdb 数据持久化到磁盘,从而进行数据备份或数据恢复等操作,较好的防止数据丢失的手段。
(3)支持通过 Replication 进行数据复制,通过 master-slave 机制,可以实时进行数据的
同步复制,支持多级复制和增量复制,master-slave 机制是 Redis 进行 HA 的重要手段。
(4)单进程请求,所有命令串行执行,并发情况下不需要考虑数据一致性问题。

二、安装 Redis 单机版

本次是在Linux环境下安装Redis,如果没有安装Linux,请安装一下,教程点这里

本次介绍的Redis版本为:redis-3.0.0.tar.gz
redis 的版本:副版本号奇数版本号是测试版,不建议在生产环境中使用。偶数版本时稳定版建议在生产环境中使用。
3.0 版本更新比较大。集成了集群技术

下载链接在这里:
链接:https://pan.baidu.com/s/1M5Vgh0Ev4PfUka5rq_NdeQ
提取码:qljm

1、安装gcc

需要在 linux 系统中安装 gcc,命令为:

yum install -y gcc-c++

2、上传Redis并且解压

我们在root目录下的temp文件夹中上传并且解压Redis。
如果不熟悉上传和基本命令,就去点击这里学习文件上传,基本命令在这片文章的上一节。
解压命令

 tar -zxf redis-3.0.0.tar.gz 

3、编译、安装Redis

解压完毕之后我们进入到解压后的Redis目录下,使用make命令对redis进行编译,编译成功之后,在redis的根目录下在执行安装命令进行安装。

编译命令  make
安装命令  make install PREFIX=/usr/local/redis

意思就是安装在后面给定参数的目录下,没有这个目录就自动创建。
执行完毕之后进入到安装目录的bin目录下。
在这里插入图片描述
出现上图就编译成功了。。。。进行下一步安装
安装成功之后如下所示:
在这里插入图片描述

4、启动Redis

Redis的启动分为前端启动和后端启动。

4.1、前端启动

去redis的安装目录的bin 目录下执行命令:

cd /usr/local/redis/bin
 ./redis-server     启动redis
 (ctrl+c)退出 redis

启动成功会看见一个Redis的图标。
在这里插入图片描述

4.2、后端启动

停止Redis,我们发现在前端启动不太方便,无法写其他命令,因此我们得修改一下启动方式,将启动方式改为后端启动。

进入到解压后的Redis目录下,进行以下操作:
(1)先将 redis 解压目录下的 redis.conf 文件拷贝到 安装好的 redis 的 bin 目录下

cd /root/temp/redis-3.0.0

命令:cp redis.conf /usr/local/redis/bin

(2)修改拷贝过来的 redis.conf 配置文件

进入到cd /usr/local/redis/bin
命令:vim redis.conf

将里面的daemonize的no 改为 yes
然后保存退出

在这里插入图片描述

(3)再次启动 redis

在 bin 目录下执行命令:
./redis-server redis.conf

(4)查看 redis 启动是否成功

输入命令:ps aux|grep redis

在这里插入图片描述
如果过启动成功了,那么Redis的线程就会如上图所示。

(5)测试 redis
在 bin 目录下启动 redis 自带的客户端

 ./redis-cli
常见 redis 命令:
ping--->pong
Ctrl+C退出

在这里插入图片描述
(6)关闭 redis 的命令

./redis-cli shutdown

三、Redis数据类型介绍

1、String( 字符串)

Redis 字符串是字节序列。Redis 字符串是二进制安全的,这意味着他们有一个已知的长度没有任何特殊字符终止,所以你可以存储任何东西,512 兆为上限

示例:
redis 127.0.0.1:6379> SET name kevin
OK
redis 127.0.0.1:6379> GET name
"kevin"

(1)incr: 让当前键值以 1 的数量递增,并返回递增后的值

(2)incrby: 可以指定参数一次增加的数值,并返回递增后的值,(原来的num是2,加10之后变为12)

(3)decr: 让当前键值以 1 的数量递减 并返回递减后的值

(4)decrby: 可以指定参数一次递减的数值,并返回递减后的值

(5)incrbyfloat: 可以递增一个双精度浮点数
以上三种方法和上面相加递增是一样的用法。

(6)append: 作用是向键值的末尾追加 value。如果键不存在则将该键的值设置为 value。返回值是追加后字符串的总长度。
在这里插入图片描述
(7)mget/mset作用与 get/set 相似,不过 mget/mset 可以同时获得/设置多个键的键值。这两个方法是批量设置和获取键值对。
在这里插入图片描述
(8)del :根据 key 来删除 value
在这里插入图片描述
(9)flushdb: 清除当前库的所有数据
在这里插入图片描述

2、Hash(hash 表)

在这里插入图片描述
Redis 的哈希是键值对的集合。
Redis 的哈希值是字符串字段和字符串值之间的映射,因此它们被用来表示对象

示例:
redis 127.0.0.1:6379> HSET key field value
OK
redis 127.0.0.1:6379> HGET key field
value

(1)hset: 存储一个哈希键值对的集合
基本格式: hset key field value -----表示的是在key的field下设置一个为“value”的值。
在这里插入图片描述
(2)hget:获取一个哈希键的值
基本格式:hget key field

(3)hmset: 存储一个或多个哈希是键值对的集合
基本格式:hmset key field1 value1 …fieldN keyN
在这里插入图片描述
(4)hmget: 获取多个指定的键的值
基本格式:hmget key field1 … fieldN

(5)hexists:判断哈希表中的字段名是否存在,如果存在返回 1 ,否则返回 0
基本格式: hexists key field
在这里插入图片描述
(6)hdel: 删除一个或多个字段
基本格式:hdel key field
在这里插入图片描述
(7)hgetall:获取一个哈希是键值对的集合
基本格式:hgetall key
在这里插入图片描述
(8)hvals: 只返回字段值
基本格式:hvals key
在这里插入图片描述
(9)hkeys: 只返回字段名
基本格式: hkeys key
在这里插入图片描述
(10)hlen: 返回 key 的 hash 的元素个数
基本格式: hlen key
在这里插入图片描述
这里是因为user下有两个属性 username和userage

3、List( 链表)

在这里插入图片描述
Redis 的链表是简单的字符串列表,排序插入顺序。您可以添加元素到 Redis 的列表的头部或尾部
Lpush:表示的是向链表的左添加,也就是向链表的头添加;
Rpush:表示的是向链表的右添加,也就是向链表的尾添加;

示例:
redis 127.0.0.1:6379> lpush tutoriallist redis
(integer) 1
redis 127.0.0.1:6379> lpush tutoriallist mongodb
(integer) 2
redis 127.0.0.1:6379> lpush tutoriallist rabitmq
(integer) 3
redis 127.0.0.1:6379> lrange tutoriallist 0 10
1) "rabitmq"
2) "mongodb"
3) "redis

拿以上的前三句来解释:

  • 执行第一句的时候,相当于在图中最左边的第一个Value处添加了redis;
  • 执行第二句的时候,首先将最左边第一个Value原有的值移到第二个Value处,然后再在第一个Value处添加了mongodb;
  • 执行第三句的时候,首先源有的值会往右顺推一个Value,然后在第一个Value出添加了rabitmq,相当于就是左添加。所以执行第四句遍历的时候,从左往右遍历出来的顺序就是那样了。

注意
Lpush:表示的是向链表的左添加,也就是向链表的头添加;
Rpush:表示的是向链表的右添加,也就是向链表的尾添加;
如果第五句执行(rpush tutoriallist java),那么就是在redis的后面。也就是第四个Value处添加了java。

(1)lpush key value: 向链表左侧添加
在这里插入图片描述
(2)rpush key value: 向链表右侧添加

(3)lpop key: 从左边移出一个元素
就是从最左边的那个节点剔除掉。
在这里插入图片描述
(4)rpop key: 从右边移出一个元素
就是从最右边的那个节点剔除掉。
在这里插入图片描述
(5)llen key: 返回链表中元素的个数 相当于关系型数据库中 select count(*)
在这里插入图片描述
(6)lrange key start end lrange: 命令将返回索引从 start 到 stop 之间的所有元素。Redis 的列表起始索引为 0。
在这里插入图片描述
lrange也支持负索引 lrange nn -2 -1
如:-1 表示最右边第一个元素 ,-2 表示最右边第二个元素,依次类推。
在这里插入图片描述
(7)lindex key indexnumber如果要将列表类型当做数组来用,lindex 命令是必不可少的。
在这里插入图片描述
lindex 命令用来返回指定索引的元素,索引从 0 开始,如果是负数表示从右边开始计算的索引,最右边元素的索引是-1。

(8)lset key indexnumber value: 是另一个通过索引操作列表的命令,它会将索引为 index的元素赋值为 value,原来的值会被覆盖。
在这里插入图片描述

4、Set( 集合)

在这里插入图片描述
Redis 的集合是字符串的无序集合。
在Set集合当中,是不允许有重复的。

示例:
redis 127.0.0.1:6379> sadd tutoriallist redis
(integer) 1
redis 127.0.0.1:6379> sadd tutoriallist mongodb
(integer) 1
redis 127.0.0.1:6379> sadd tutoriallist rabitmq
(integer) 1
redis 127.0.0.1:6379> sadd tutoriallist rabitmq
(integer) 0
redis 127.0.0.1:6379> smembers tutoriallist
1) "rabitmq"
2) "mongodb"
3) "redis"

(1)sadd key value
添加一个 string 元素到,key 对应的 set 集合中,
成功返回 1,如果元素已经在集合中返回 0
在这里插入图片描述

(2)scard key: 返回 set 的元素个数,如果 set 是空或者 key 不存在返回 0
在这里插入图片描述
(3)smembers key: 返回 key 对应 set 的所有元素,结果是无序的
在这里插入图片描述
但是不保证有序。

(4)sismember key value: 判断 value 是否在 set 中,存在返回 1,0 表示不存在或者 key 不存在
在这里插入图片描述

(5)srem key value
从 key 对应 set 中移除给定元素,成功返回 1,
如果 value 在集合中不存在或者 key 不存在返回 0

5、SortedSet( 有序集合)zset

Redis 的有序集合类似于 Redis 的集合,字符串不重复的集合。

示例:
redis 127.0.0.1:6379> zadd tutoriallist 0 redis
(integer) 1
redis 127.0.0.1:6379> zadd tutoriallist 0 mongodb
(integer) 1
redis 127.0.0.1:6379> zadd tutoriallist 0 rabitmq
(integer) 1
redis 127.0.0.1:6379> zadd tutoriallist 0 rabitmq
(integer) 0
redis 127.0.0.1:6379> ZRANGEBYSCORE tutoriallist 0 1000
1) "redis"
2) "mongodb"
3) "rabitmq"

(1)zadd key score value: 将一个或多个 value 及其 socre 加入到 set 中
在这里插入图片描述
**(2)zrange key start end **:0 和-1 表示从索引为 0 的元素到最后一个元素(同 LRANGE 命令相似)
在这里插入图片描述
**(3)zrange key 0 -1 withscores **
也可以连同 score 一块输出,使用 WITHSCORES 参数
在这里插入图片描述
(4)zremrangebyscore key start end: 可用于范围删除操作
在这里插入图片描述

这里只介绍了5种数据类型,后面会持续更新。。。

上一篇学习:学习笔记之

下一篇学习:学习笔记之Redis学习(二)

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值