Redis系列之扫盲篇(一)
互联网全栈架构
共 4380字,需浏览 9分钟
· 2020-11-27
作者:z小赵
★一枚用心坚持写原创的“无趣”程序猿,在自身受益的同时也让朋友们在技术上有所提升。
目录
Redis 是什么? Redis 安装。 基础命令扫盲。
Redis 是什么?
Redis 是一款由 C 语言编写的、分布式的、高性能的、非关系型数据库,其拥有超高的吞吐量(每秒 10w,我司实际使用场景中单端口读请求最高 8w,写请求 5w,具体得看实际使用场景和机器性能),但由于其基于内存操作的,内存相对比较昂贵的,所以一般只有在并发相对比较高且存储要求相对较小的场景中被广泛使用(如果有钱一般可以不用考虑内存的事情,哈哈)。
想说一句多余的话,为什么要学习 Redis 呢?在我看来就两点:
为了当下实际业务使用而学习 为了进大厂
为了这两个目标,想学习的朋友们抓紧上车,一起开启愉快的学习旅程。
Redis 安装
下载地址
http://download.redis.io/releases/
安装
$ ls
redis-4.0.10.tar.gz
# 减压
$ tar -zxvf redis-4.0.10.tar.gz
# 编译测试
$ sudo make test
# 编译安装
$ sudo make install
# 以后台的方式启动Redis
$ ./redis-server ~/software/redis-4.0.10/redis.conf &
# 查看Redis进程
$ ps -ef | grep redis
# 登录Redis客户端,Redis默认配置启动端口是6379,可以通过修改配置替换端口
$ ./redis-cli -h localhost -p 6379
基础命令扫盲
key 常用操作
# 查询指定key是否存在
$ localhost:6379> EXISTS hash1
(integer) 1
$ localhost:6379> EXISTS jjj
(integer) 0
# 删除指定key
$ localhost:6379> DEL hash1
(integer) 1
$ localhost:6379> EXISTS hash1
(integer) 0
# 对指定key设置过期时间
$ localhost:6379> set t1 value ex 5
OK
# 查询指定key的过期时间
$ localhost:6379> TTL t1
(integer) 7
# 查询指定key的类型
$ localhost:6379> type t1
string
kv 结构
# 设置key 对应的value
$ localhost:6379> set key1 value1
OK
# 获取key对应的value
$ localhost:6379> get key1
"value1"
# 设置带有过期时间的key,EX标识5秒后过期,单位秒
$ localhost:6379> set key2 value2 EX 5
OK
# 设置带有过期时间的key,PX表示5秒后过期,单位毫秒
# 设置key,如果其不存在的话,NX
$ localhost:6379> set key3 vlaue3 NX
OK
# 如果key存在的话,则直接返回nil
$ localhost:6379> set key3 value3 NX
(nil)
list 结构
# 从左侧插入元素
$ localhost:6379> LPUSH list1 1
(integer) 1
# 从右侧插入元素
$ localhost:6379> RPUSH list1 2
(integer) 2
# 查看集合内的元素,-1 表示查看所有元素
$ localhost:6379> LRANGE list1 0 -1
1) "1"
2) "2"
# 查看list的元素个数
$ localhost:6379> LLEN list1
(integer) 2
# 根据索引查询对应的元素,如果指定的索引不存在,则返回'nil'
$ localhost:6379> LINDEX list1 0
"2"
# 从列表左侧移除一个元素
$ 127.0.0.1:6379> LPOP list1
"5"
# 从列表右侧移除一个元素
$ 127.0.0.1:6379> RPOP list1
"1"
# 从列表右侧移除一个元素添加到左侧
$ localhost:6379> LRANGE list1 0 -1
1) "three"
2) "two"
3) "one"
$ localhost:6379> RPOPLPUSH list1 list2
"one"
$ localhost:6379> LRANGE list2 0 -1
1) "one"
set 结构
# 向set中添加一个元素
$ localhost:6379> SADD set1 'one' 'two' 'three'
(integer) 3
# 获取set集合中的元素
$ localhost:6379> SMEMBERS set1
1) "one"
2) "three"
3) "two
# 从set集合中移除一个或多个元素
$ localhost:6379> SREM set1 'one'
(integer) 1
# 从set集合中移除一个或多个元素并返回被删除元素
$ localhost:6379> SPOP set1 1
1) "three"
# 获取当前set集合元素个数
$ localhost:6379> SCARD set1
(integer) 3
# 从set集合随机获取元素但不删除
$ localhost:6379> SRANDMEMBER set1 1
1) "one"
$ localhost:6379> SMEMBERS set1
1) "three"
2) "two"
3) "one"
# 判断set集合中是否存在指定元素,如果存在则返回1,不存在返回0
$ localhost:6379> SISMEMBER set1 'one'
(integer) 1
$ localhost:6379> SISMEMBER set1 '4'
(integer) 0
sorted set 结构
# 向有序集合中添加元素
$ localhost:6379> ZADD zset1 1 'one'
(integer) 1
# 获取有序集合中指定分数范围的元素
$ localhost:6379> ZRANGE zset1 0 -1
1) "one"
2) "two"
3) "three"
# 删除有序集合中的元素
$ localhost:6379> ZREM zset1 'one'
(integer) 1
# 获取有序集合元素个数
$ localhost:6379> ZCARD zset1
(integer) 2
# 为有序集合中指定成员增加指定个数
$ localhost:6379> ZINCRBY zset1 2 "one"
"4"
$ localhost:6379> ZRANGE zset1 0 -1 WITHSCORES
1) "two"
2) "2"
3) "three"
4) "3"
5) "one"
6) "4"
# 获取有序集合指定分数范围内的元素数量
$ localhost:6379> ZCOUNT zset1 0 2
(integer) 1
# 获取元素在有序集合中的排名,分数越大,排名值越大
$ localhost:6379> ZRANK zset1 'one'
(integer) 2
# 获取元素在有序集合中的排名。分数越大,排名值越小
$ localhost:6379> ZREVRANK zset1 'one'
(integer) 0
# 获取指定元素的分值
$ localhost:6379> ZSCORE zset1 'one'
"4"
hash 结构
# 向hash集合中添加一个元素
$ localhost:6379> HSET hash1 field1 1
(integer) 1
# 向hash集合中添加多个元素
$ localhost:6379> HMSET hash1 field2 2 field3 3
OK
# 获取指定field对应的value
$ localhost:6379> HGET hash1 field1
"1"
# 批量获取指定field下的value
$ localhost:6379> HMGET hash1 field1 field2 field3
1) "1"
2) "2"
3) "3"
# 获取hash结合里面所有元素
$ localhost:6379> HGETALL hash1
1) "filed1"
2) "1"
3) "filed2"
4) "2"
5) "filed3"
6) "3"
7) "field3"
8) "3"
# 判断指定filed是否在Hash结构中存在
$ localhost:6379> HEXISTS hash1 field1
(integer) 1
$ localhost:6379> HEXISTS hash1 field5
(integer) 0
# 从hash结构中删除一个或多个field
$ localhost:6379> HDEL hash1 field1 field2
(integer) 2
# 对hash集合中指定field的value增加值
$ localhost:6379> HINCRBY hash1 field1 2
(integer) 3
$ localhost:6379> HGET hash1 field1
"3"
# 获取hash结构中所有的key
$ localhost:6379> HKEYS hash1
1) "filed1"
2) "filed2"
3) "filed3"
4) "field3"
5) "field1"
$ 获取hash集合中所有的value
$ localhost:6379> HVALS hash1
1) "1"
2) "2"
3) "3"
4) "3"
5) "3"
# 获取hash集合中的元素个数
$ localhost:6379> HLEN hash1
(integer) 5
总结
本文介绍了实际生产中常见常用的命令,更多详细命令使用及介绍可以查看官网,如果觉得看的费劲的话,也可访问中文网站。
官网:https://redis.io/commands 中文网站:http://www.redis.cn/commands.html#
今天文章主要是 Redis 基础使用扫盲,下面文章开始趴一下 Redis 的底层实现,看看它为啥那么快,敬请期待。
评论
一女子与一男子在阳台上打扑克,被邻居偷拍后...
近日网络上又发生了一起疑似黄色谣言的事件:一女子与一男子在阳台上打扑克,被邻居偷拍后上传到网上,引发广泛舆论讨论。根据网传视频显示,一名穿着吊带睡衣的女子与一名光着上身的男性在阳台上交谈,随后开始打起扑克牌。这一幕被邻居拍下并上传至网络后,引发了许多网友的关注和猜测,其中大部分涉及到了不当的假设。当
逆锋起笔
0
学一学 Spring Boot 3.x
在 Java 后端开发领域,功能强大的 Spring 开源框架不仅是首选,也是事实上的标准。但由于 Spring 存在配置烦琐、部署不易、依赖管理困难等问题,因此基于 Spring 的快速开发框架 Spring Boot 应运而生,它能大大简化 Spring 应用程序的配置和部署过程。2018 年,
小哈学Java
0
聊一聊我最常关注的9个计算机视觉、自动驾驶、AI方向高质量圈子
随着计算机视觉(2D/3D)、SLAM、自动驾驶、AI技术的快速迭代更新,可落地的技术也成为人们争先学习的重点。这使得从业者对于最前沿技术的获取能力变得至关重要。微信公众号便是一个非常有效的前沿信息分享平台。这里给大家推荐9个最常打开的计算机视觉、自动驾驶、SLAM、机器学习和AI方向的优质公众号平
机器学习初学者
0
Go 1.22 的新增功能系列之二:reflect.TypeFor
Go 1.22 的第一个候选版本已经发布,这意味着最终版本即将发布,现在是我在博客中介绍我在这个周期中所做工作的时候了。像往常一样,我的贡献很小,但它们是我的,所以我将从幕后的角度来谈谈它们。首先是reflect.TypeFor。这是整个函数:// TypeFor returns the [Type
GoCN
0
聊一聊我最关注的9个CV、SLAM、自动驾驶和AI圈子!
随着计算机视觉(2D/3D)、SLAM、自动驾驶、AI技术的快速迭代更新,可落地的技术也成为人们争先学习的重点。这使得从业者对于最前沿技术的获取能力变得至关重要。微信公众号便是一个非常有效的前沿信息分享平台。这里给大家推荐9个最常打开的计算机视觉、自动驾驶、SLAM、机器学习和AI方向的优质公众号平
3D视觉工坊
0
Go 1.22 的新增功能系列之一:cmp.Or
截至撰写本文时,Go 1.22 已经发布几个月了。早就该结束我为 1.22 所做的工作的系列了。抱歉耽搁了这么久,我最近忙于生活事务。如果您错过了我关于reflect.TypeFor(https://blog.carlana.net/post/2024/golang-reflect-type-for
GoCN
1
AI论文写作工具和生成器(一)
随着人工智能和大模型的迅猛发展,AI对研究人员和学生提供了极大的写作便利。本文将介绍市面上常用的AI论文写作工具,帮助你提高论文写作效率并遵循学术道德。请仅将AI论文生成器视为辅助参考手段,切勿直接挪用全文。XPaper AlXPaper AI是由点击式创作工具晓语台推出的一款论文写作生成平台,只需
IQ前端
0
乐普心安宝及心电图机,助力安康市搭建“心电一张网”,打通全域“生命线”!
为持续推动胸痛中心建设,助力全民健康,全面提升心血管疾病等急危重症救治能力水平。4月20日,由安康市卫健委主办、安康市中医医院承办的“第七届心血管汉江学术会议暨安康市胸痛中心大会”在高新国际会议中心顺利举行。市人大常委会主任王彪、市政协副主席唐纹、市政府党组成员刘英华等领导亲临现场,受邀参会的中国科
乐普医疗AI
0