Redis简介以及linux下常用下令

打印 上一主题 下一主题

主题 637|帖子 637|积分 1911

`学习目标
一、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
  1. vim /home/softwares/redis-7.2.4/redis.conf
复制代码
在redis.conf文件中配置redis为背景运行
  1. daemonize yes
复制代码
以配置文件的方式启动
进入到usr/local.bin目次
  1. cd /usr/local/bin
复制代码
  1. redis-server  /home/softwares/redis-7.2.4/redis.conf
复制代码
这里我把conf 拷贝 /usr/local/bin 改名为redis7.conf
所以我的启动下令是
  1. redis- server /usr/local/bin/redis7.conf
复制代码

单实例关闭数据库
  1. redis-cli shutdown
复制代码
多实例关闭数据库
  1. redis-cli - p 6379 shutdown
复制代码
redis默认配置16个数据库
常用操作

检查6379端口是否在监听
  1. netstat -lntp | grep 6379
复制代码
检查redis 背景进程是否存在
  1. ps -ef |grep redis
复制代码
redis 为什么是6379端口
6379实在手机按键上MERZ对应的号码。而MERZ取自意大利歌女Alessia Merz的名字。
毗连redis并测试

进入redis的下令终端
  1. [root@localhost bin]# /usr/local/bin/redis-cli
复制代码
在redis终端输入ping下令
  1. 127.0.0.1:6379> auth 123456
  2. OK
  3. 127.0.0.1:6379> ping
  4. PONG
  5. 127.0.0.1:6379>
复制代码
读写数据

向k1保存数据,获取数据
  1. 127.0.0.1:6379> set k1 hello
  2. OK
  3. 127.0.0.1:6379> get k1
  4. "hello"
  5. 127.0.0.1:6379>
复制代码
测试性能

  1. [root@localhost bin]# redis-benchmark  -a 123456
复制代码
清空数据库
清空当前数据库
清空所有数据库
  1. [root@localhost bin]# /usr/local/bin/redis-cli
  2. 127.0.0.1:6379> auth 123456
  3. OK
  4. 127.0.0.1:6379> flushdb
  5. OK
  6. 127.0.0.1:6379> flushall
  7. OK
  8. 127.0.0.1:6379>
复制代码


模糊查询

模糊查询keys下令 ,有三个通配符号:*、?、[ ].
匹配恣意字符*

查询所有的键
  1. 127.0.0.1:6379> keys *
  2. 1) "k1"
  3. 2) "ke"
  4. 3) "k"
  5. 4) "k3"
  6. 5) "kh"
  7. 6) "k2"
  8. 7) "sdk"
复制代码
模糊查询“k”开头的,反面随便匹配多少个字符
  1. 127.0.0.1:6379> keys k*
  2. 1) "k1"
  3. 2) "ke"
  4. 3) "k"
  5. 4) "k3"
  6. 5) "kh"
  7. 6) "k2"
复制代码
模糊查询“h”为最后一位,前面随便多少个字符
  1. 127.0.0.1:6379> keys *h
  2. 1) "kh"
  3. 127.0.0.1:6379>
复制代码
双* 模式,匹配恣意多个字符,查询包含K的键
  1. 127.0.0.1:6379> keys *d*
  2. 1) "sdk"
  3. 127.0.0.1:6379>
复制代码
匹配单个字符*

模糊查询“k”开头并且匹配一个字符
  1. 127.0.0.1:6379> keys k?
  2. 1) "k1"
  3. 2) "ke"
  4. 3) "k3"
  5. 4) "kh"
  6. 5) "k2"
复制代码
查询字符长度为3 并且以s开头的键
  1. 127.0.0.1:6379> keys s??
  2. 1) "sdk"
复制代码
匹配指定字符 【】

记得其他的字母,就第二个字母大概是d或f
  1. 127.0.0.1:6379> keys s[df]k
  2. 1) "sdk"
复制代码
键操作

exist key :判断某个key是否存在 1表现存在 0 表现不存在
  1. 127.0.0.1:6379> exists k2
  2. (integer) 1
  3. 127.0.0.1:6379> exists k20
  4. (integer) 0
复制代码
move key db:移动键到指定的库 1表现移动乐成
  1. move k2 4
复制代码
ttl key:查看键另有多久逾期 -1表现永不逾期 -2 表现已逾期
expire key 秒:为键设置逾期时间(生命倒计时),单元是秒。
type key 查看键的数据类型
  1. 127.0.0.1:6379> type k1
  2. string
  3. 127.0.0.1:6379> expire k1 60
  4. (integer) 1
  5. 127.0.0.1:6379> ttl k1
  6. (integer) 55
  7. 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企服之家,中国第一个企服评测及商务社交产业平台。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

前进之路

金牌会员
这个人很懒什么都没写!

标签云

快速回复 返回顶部 返回列表