Redis篇 <一>Docker安装redis 及基础

前言

开始写一个redis 系列的,期间不参杂其他的了,一攻到底,就是因为这方面用得不多,总是在redis这一块被面试官吊打, 主要是学习,其次是不要再被胖揍了!!!

老生常谈的redis~直接开搞。

img

Redis 是速度非常快的非关系型(NoSQL)内存键值数据库,可以存储键和五种不同类型的值之间的映射。

键的类型只能为字符串,值支持五种数据类型:字符串、列表、集合、散列表、有序集合。

Redis 支持很多特性,例如将内存中的数据持久化到硬盘中,使用复制来扩展读性能,使用分片来扩展写性能。

1、Docker安装 redis

Docker (~ ̄▽ ̄)~先立个flage, redis 系列完了之后 再上一个Docker系列,有人@的话就参插着出Docker的😉


1.1 拉取redis镜像 (默认拉取最新版本, 可通过" docker pull redis: 版本号" 来拉取指定版本 )

docker pull redis

1.2 创建实例并启动

需要预先创建文件地址,必须先执行此步骤,不然启动的命令的redis.conf会被认为是目录(小坑)

mkdir -p /mydata/redis/conf 
touch /mydata/redis/conf/redis.conf

1.3 启动

docker run -p 6379:6379 --name redis \
-v /mydata/redis/data:/data \
-v /mydata/redis/conf/redis.conf:/etc/redis/redis.conf \
-d redis redis-server /etc/redis/redis.conf --appendonly yes

其中-d redis redis-server /etc/redis/redis.conf 是指 以该配置文件进行启动

若是有问题则去掉最后的 --appendonly yes, 未做测试,我的已经安装好了,加上这句话是默认配置持久化。和下面修改配置文件有同工异曲之处。


1.4 修改配置文件

redis.config 可以在官网找到,一般redis 自行根据系统的使用进行一些自定义配置。通过 3步骤,可以查看一下redis.conf 是否配置了 appendonly yes

 cd /mydata/redis/conf/
 vi redis.conf

按理应该出现 appendonly yes 的配置,若没有则 往下执行😂。

官方文档里有对应版本的redis.config的配置文件,拷下来即可: https://redis.io/topics/config

这边先简单的 配置一下即可:

appendonly yes

1.5 进入redis容器使用redis-cli命令进行连接:

docker exec -it redis redis-cli

结果如图:若是报NOAUTH Authentication required, 就是字面意思,需要密码,因为我配置了密码,没有配置密码的则可以直接连接完成。看图可知,可以直接 set 和 get 操作了。至此docker安装redis完成

img


1.6 配置自启动

想想啊,若是每次docker启动都要来手动启动下redis岂不是很麻烦,来吧,配置自启动

//让其自动启动  docker重启后、redis会自动启动
docker update redis --restart=always

类似的也可以让 mysql也自启动,还有…

1.7 Redis Desktop Manager

操作数据库自然少不了可视化客户端的👍 Redis Desktop Manager, 董事的都已经安装好了。

img

这样就可以远程连接上了,就像连接mysql的Navicat一样。可以看到 刚刚设置的 set a saiuna , 该客户端还带了命令窗口,不多口舌了~债见


2、Redis 的基础类型


数据类型可以存储的值操作
STRING字符串、整数或者浮点数对整个字符串或者字符串的其中一部分执行操作对整数和浮点数执行自增或者自减操作
LIST列表从两端压入或者弹出元素对单个或者多个元素进行修剪,只保留一个范围内的元素
SET无序集合添加、获取、移除单个元素检查一个元素是否存在于集合中计算交集、并集、差集从集合里面随机获取元素
HASH包含键值对的无序散列表添加、获取、移除单个键值对获取所有键值对检查某个键是否存在
ZSET有序集合添加、获取、删除元素根据分值范围或者成员来获取元素计算一个键的排名

2.1 String 字符串

在这里插入图片描述

//插入
saiuna:0>set hello word
"OK"
//获取
saiuna:0>get hello
"word"
// 删除
saiuna:0>del hello
"1"

saiuna:0>get gello
null

2.2 List 列表

在这里插入图片描述

rpush (key,value)

往list集合push元素

saiuna:0>rpush list-key item1
"1"

saiuna:0>rpush list-key item2
"2"

saiuna:0>rpush list-key item3
"3"

lrange 返回列表中指定区间内的元素

区间以偏移量 START 和 END 指定。 其中 0 表示列表的第一个元素, 1 表示列表的第二个元素,以此类推。 你也可以使用负数下标,以 -1 表示列表的最后一个元素, -2 表示列表的倒数第二个元素,以此类推。

//获取所有元素
saiuna:0>lrange list-key 0 -1
1) "item1"
2) "item2"
3) "item3"

lpop从 list 的头部删除元素,并返回删除元素

//从 list 的头部删除元素,并返回删除元素
saiuna:0>lpop list-key
"item1"
//可以看到第一个元素item1已经被删除
saiuna:0>lrange list-key 0 -1
1) "item2"
2) "item3"

2.3 SET 无序集合

在这里插入图片描述

set集合 命令

//sadd  添加 => map.add()
saiuna:0>sadd set-key item
"1"

saiuna:0>sadd set-key item2
"1"

saiuna:0>sadd set-key item3
"1"
//查询该集合  可以看出为无序
saiuna:0>smembers set-key
1) "item3"
2) "item2"
3) "item"

// 判断 member 元素是否是集合 key 的成员
saiuna:0>sismember set-key item4
"0" //显然不是该集合成员
saiuna:0>sismember set-key item
"1" 

srem 移除一个或多个 key srem key [item item2 … ]

saiuna:0>srem set-key item item2
"2"
saiuna:0>smembers set-key
1) "item3"
//再次移, 移除失败,不存在该key,返回0 
saiuna:0>srem set-key item
"0"

2.4 Hash

Hash 是包含键值对的无序散列表

在这里插入图片描述

HSET key field value将哈希表 key 中的字段 field 的值设为 value 。

saiuna:0>hset hash-key sub-key1 value1
"1"
saiuna:0>hset hash-key sub-key2 value2
"1"

//遍历key下的所有键值对
saiuna:0>hgetall hash-key
1) "sub-key1"
2) "value1"
3) "sub-key2"
4) "value2"

//hget 获取对应key的 fiel的value值
saiuna:0>hget hash-key sub-key1
"value1"

//已存在的只会改变值而不是新增
saiuna:0>hset hash-key sub-key1 修改
"0"

saiuna:0>hgetall hash-key
1) "sub-key1"
2) "修改"
3) "sub-key2"
4) "value2"

2.5 Zset 有序集合

在这里插入图片描述

Redis 有序集合和集合一样也是string类型元素的集合,且不允许重复的成员。

不同的是每个元素都会关联一个double类型的分数。redis正是通过分数来为集合中的成员进行从小到大的排序。

有序集合的成员是唯一的,但分数(score)却可以重复。

集合是通过哈希表实现的,所以添加,删除,查找的复杂度都是O(1)。 集合中最大的成员数为 232 - 1 (4294967295, 每个集合可存储40多亿个成员)。

//zadd 添加
saiuna:0>zadd zset-key 728 member1
"1"
saiuna:0>zadd zset-key 925 member0
"1"

//排序
saiuna:0>zrange zset-key 0 -1 withscores
1) "member1"
2) "728"
3) "member0"
4) "925"

//按值的区间 查询
saiuna:0>zrangebyscore zset-key 0 800 withscores
1) "member1"
2) "728"

//同srem 移除指定key下的field
saiuna:0>zrem zset-key member1
"1"
saiuna:0>zrem zset-key member1
"0"

saiuna:0>zrange zset-key 0 -1 withscores
1) "member0"
2) "925"

参考

《Redis 实战》


今天不学习明天变辣鸡
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值