ToB企服应用市场:ToB评测及商务社交产业平台
标题:
Redis简介以及linux下常用下令
[打印本页]
作者:
前进之路
时间:
2024-7-27 07:51
标题:
Redis简介以及linux下常用下令
`学习目标
一、redis简介
1.1 redis介绍
Remote Dictionary Server (redis) 是一个由salvatore Sanfilippo开发的高性能的key-value数据库(存储系统)。Redis是一个开源的使用ANSI C语言编写、服从BSD协议、支持网络、可基于内存也可持久化的日志型,key-value数据库,并提供多种语言的api。它通常被称为数据结构服务器,因为值可以是字符串(String)、哈希(Map)、列表(List)、集合(Set)、有序集合()等类型。
Redis是一种运行速率很快、并发性能很强(高并发、高扩展、高性能),并且运行在内存上的Nosql数据库。
Nosql数据库和传统数据库相比的上风:
Nosql数据库无需事先为存储的数据创建字段,随时可以存储自界说的数据格式。
而在关系型数据库里,增删字段是一件非常麻烦的事变。假如非常大数据量的表,增长字段就是一个噩梦。
1.2 redis上风
性能极高 redis能读的速率是110000次/秒 ,写的速率是81000次/秒。
丰富的数据类型 redis支持二进制案例的String、List、hash、Set 以及 OrderedSet 数据类型操作。
原子 redis的所有操作都是原子性的,同时还支持对几个操作全并后的原子性实行。
丰富的特性- redis还支持public/subscribe、关照key逾期等特性。
1.3 redis使用场景
缓存
热门数据(经常查询,但不修改或删除数据)
分布式锁
锁即在多线程环境下,对共享资源的访问造成的线程安全问题,通过锁的机制来实现资源访问互斥
token存储
短信验证码存储
全局唯一id
排行榜
redis的SortSet数据结构能轻松的搞定
计算器/限速器
利用redis中原子性的自增操作,可以统计类似用户点赞数、用户访问数。限速器如限定某个用户访问某个api的评率。常用的有抢购时,防止用户疯狂点击带来不必要的压力
挚友关系
利用集合的一些下令。如求交集、并集、差集、可以方便搞定一些共同挚友、共同爱好之类的功能。
简朴消息队列
除了自带的发布订阅模式,也可以用list来实现一个队列机制如到货关照、邮件发送之类的需求,不必要高可靠,但是会带来非常大的db压力,完全可以用list来完成异步解耦。
session共享
redis上存储Session ,无论用户落在哪台机器上都可以获取对应Session信息。
1.4 Nosql对比分析
redis和memcache
redis和memcache都是内存数据库。mencache可以缓存其他东西 如图片、视频等。
memcache数据结构单一,redis更丰富
假造内存。redis物理内存用完了,可以将一些很久没有用到的value交换到磁盘。
存储安全。memcache挂掉后,数据没有(没有持久化)redis可以定期保存到磁盘
redis和mongoDB
redis和mongodb 并不是竞争关系,更多的是一种协作共存的关系。
mongodb本质还是硬盘数据库,在复杂查询时仍然斲丧大量的资源斲丧,而且在处理复杂逻辑时仍然要不可制止的进行多次查询。这时停当余redis或memcache如许的内存数据库来作为中央层进行缓存和加快。
二、redis入门
2.1 redis下载与安装
redis下载
redis下载地点:https://www.redis.net.cn/
Redis Desktop Manager 图形工具下载地点:https://redisdesktop.com/
redis安装
windows安装
Linux安装
redis linux 下根本操作
编辑redis.config文件
redis解压到/home/softwares/redis-7.2.4
vim /home/softwares/redis-7.2.4/redis.conf
复制代码
在redis.conf文件中配置redis为背景运行
daemonize yes
复制代码
以配置文件的方式启动
进入到usr/local.bin目次
cd /usr/local/bin
复制代码
redis-server /home/softwares/redis-7.2.4/redis.conf
复制代码
这里我把conf 拷贝 /usr/local/bin 改名为redis7.conf
所以我的启动下令是
redis- server /usr/local/bin/redis7.conf
复制代码
单实例关闭数据库
redis-cli shutdown
复制代码
多实例关闭数据库
redis-cli - p 6379 shutdown
复制代码
redis默认配置16个数据库
常用操作
检查6379端口是否在监听
netstat -lntp | grep 6379
复制代码
检查redis 背景进程是否存在
ps -ef |grep redis
复制代码
redis 为什么是6379端口
6379实在手机按键上MERZ对应的号码。而MERZ取自意大利歌女Alessia Merz的名字。
毗连redis并测试
进入redis的下令终端
[root@localhost bin]# /usr/local/bin/redis-cli
复制代码
在redis终端输入ping下令
127.0.0.1:6379> auth 123456
OK
127.0.0.1:6379> ping
PONG
127.0.0.1:6379>
复制代码
读写数据
向k1保存数据,获取数据
127.0.0.1:6379> set k1 hello
OK
127.0.0.1:6379> get k1
"hello"
127.0.0.1:6379>
复制代码
测试性能
[root@localhost bin]# redis-benchmark -a 123456
复制代码
清空数据库
清空当前数据库
清空所有数据库
[root@localhost bin]# /usr/local/bin/redis-cli
127.0.0.1:6379> auth 123456
OK
127.0.0.1:6379> flushdb
OK
127.0.0.1:6379> flushall
OK
127.0.0.1:6379>
复制代码
键
模糊查询
模糊查询keys下令 ,有三个通配符号:*、?、[ ].
匹配恣意字符*
查询所有的键
127.0.0.1:6379> keys *
1) "k1"
2) "ke"
3) "k"
4) "k3"
5) "kh"
6) "k2"
7) "sdk"
复制代码
模糊查询“k”开头的,反面随便匹配多少个字符
127.0.0.1:6379> keys k*
1) "k1"
2) "ke"
3) "k"
4) "k3"
5) "kh"
6) "k2"
复制代码
模糊查询“h”为最后一位,前面随便多少个字符
127.0.0.1:6379> keys *h
1) "kh"
127.0.0.1:6379>
复制代码
双* 模式,匹配恣意多个字符,查询包含K的键
127.0.0.1:6379> keys *d*
1) "sdk"
127.0.0.1:6379>
复制代码
匹配单个字符*
模糊查询“k”开头并且匹配一个字符
127.0.0.1:6379> keys k?
1) "k1"
2) "ke"
3) "k3"
4) "kh"
5) "k2"
复制代码
查询字符长度为3 并且以s开头的键
127.0.0.1:6379> keys s??
1) "sdk"
复制代码
匹配指定字符 【】
记得其他的字母,就第二个字母大概是d或f
127.0.0.1:6379> keys s[df]k
1) "sdk"
复制代码
键操作
exist key :判断某个key是否存在 1表现存在 0 表现不存在
127.0.0.1:6379> exists k2
(integer) 1
127.0.0.1:6379> exists k20
(integer) 0
复制代码
move key db:移动键到指定的库 1表现移动乐成
move k2 4
复制代码
ttl key:查看键另有多久逾期 -1表现永不逾期 -2 表现已逾期
expire key 秒:为键设置逾期时间(生命倒计时),单元是秒。
type key 查看键的数据类型
127.0.0.1:6379> type k1
string
127.0.0.1:6379> expire k1 60
(integer) 1
127.0.0.1:6379> ttl k1
(integer) 55
127.0.0.1:6379>
复制代码
scan:渐进式遍历键
SCAN cursor [MATCH pattern] [COUNT count]
scan 参数提供了三个参数,第一个是 cursor 整数值(hash桶的索引值),第二个是 key 的正则模式, 第三个是一次遍历的key的数量(参考值,底层遍历的数量不肯定),并不是符合条件的效果数量。第 一次遍历时,cursor 值为 0,然后将返回效果中第一个整数值作为下一次遍历的 cursor。一直遍历 到返回的 cursor 值为 0 时竣事。
留意:但是scan并非美满无瑕, 假如在scan的过程中假如有键的变化(增长、 删除、 修改) ,那 么遍历效果大概会碰到如下问题: 新增的键大概没有遍历到, 遍历出了重复的键等情况, 也就是说 scan并不能包管完整的遍历出来所有的键, 这些是我们在开发时必要考虑的。
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
欢迎光临 ToB企服应用市场:ToB评测及商务社交产业平台 (https://dis.qidao123.com/)
Powered by Discuz! X3.4