一 介绍

1. redis介绍(redis安装在磁盘,redsi数据存储在内存)

服务器交互

2. Redis是一种基于键值对(key-value)数据库,其中value可以为string. hash. List. Set. Zset 等多种数据结构,可以满足很多应用场景。还提供了键过期,发布订阅,事务,流水线,等附加功能。

3. 流水线:redis的流水线功能允许客户端一次将多个命令请求发送服务器,并将被执行的多个命令请求的结果在一个命令回复中全部返回客户端,使用这个功能可以有效地减少客户端在执行多个命令时需要与服务器进行通信的次数。

二 特性:

1. 速度快,数据放在内存中,官方给出的读写性能10万/s,与机器性能也有关系:

A) 数据放内存中是速度快的主要原因

B) C语音实现,与操作系统距离近

C) 使用了单线程,预防多线程可能产生的竞争问题

2. 键值对的数据结构服务器

3. 丰富的功能

4. 简单稳定,单线程

5. 持久化,发生断电或机器故障,数据可能会丢失,持久化到硬盘

6. 主从复制,实现多个相同数据的redis副本

7. 高可用和分布式,哨兵机制实现高可用,保证redis节点故障发现和自动转移

三 使用场景:

1. 缓存: 合理使用缓存加快数据访问速度,降低后端数据源压力

2. 排行榜: 按照热度排名,按照发布时间排名,主要用到列表和有序集合

3. 计数器应用:视频网站播放次数,网站浏览次数,使用redis计数

4. 社交网站:赞,踩,粉丝,下拉,刷新

5. 消息队列: 发布和订阅

四 正确安装和使用

1. Linux上安装,windows安装

2. 配置,启动,操作,关闭

可执行文件

作用

Redis-service

启动redis

Redis-cli

Redsi命令客户端

Redis-benchmark

基准测试工具

Redis-check-aof

AOF持久化文件检测和修复工具

Redis-check-dump

RDB持久化文件检测和修复工具

Redis-sentinel

启动哨兵

3. redis-service 启动:

1. 默认配置: redis-service,日志输出版本信息,端口6379

2. 运行启动: redis-service

3. 配置文件启动: redis-service /opt/redis/redis.conf,灵活,生产环境使用

4. Redis-cli启动:

1) 交互式: redis-cli -h(host) -p(port) 链接到redis服务,没有h默认链接127.0.0.1

2) 命令式: redis-cli get hello //取key=hello的value

3) 停止使用: redis服务 redis-cli shutdown

注意:

A:关闭时,断开链接,持久化文件生成

B:还可以用kill关闭,此方法不会做持久化,还会造成缓冲区非法关闭,可能会造成AOF和数据丢失

4) 重大版本:

1. 版本号第二位为奇数,为非稳定版本

2. 第二位为偶数,为稳定版本

3. 当前奇数版本是下一个稳定版本的开发版本(如2.9版本是3.0版本的开发版本)

五 redis的API应用:

1. redsi 基本通讯模型

例子: 三个客户端同时执行命令

客户端1: set name test

客户端2: incr num

客户端3: incr num

指令

执行过程: 发送指令->执行指令->返回结果

执行命令: 单线程执行,所有命令进入队列,按照顺序执行,使用I/O多路复用解决问题

单线程快的原因: 纯内存访问,非阻塞I/O,单线程避免线程切换和竞争产生资源消耗

2. 数据结构(string)

1. 字符串类型: 实际上可以是字符串(包含xml json),还有数字,二进制,最大不能超过512MB

2. 设值命令: set age 23 ex 10 //10秒后过期

3. 获取命令: get age //存在返回value 不存在返回nil

4. 批量设值: mset country

5. 批量获取mget country

6. 若没有mget命令,则要执行N次get 命令

交互

7. 使用mget=1次网络请求加redis内部N次查询

N次查询

8. 计数: incr age //必须为整数增加1,非整数返回错误,无age键从0自增返回1

decr age //整数age减1

Incrby age 2//整数age +2

Decrby age 2 //整数 age -2

Incrbyfloat score 1.1 //浮点型 score+1.1

9. append 追加命令: set name hello append name world //追加后成 helloworld

10. 字符串长度: set hello “中航”:strlen hello// 结果6, 每个中文站3个字节

11. 截取字符串: set name helloworld:getranget name 24// 返回llo

3 数据结构 --哈希 hash

1. 是一个string 类型的 filed 和 value 的映射表,hash特适合用于存储对象

hash

以上图片命令分别为:

Set user:1:name name

Set user:1:age 19

可以发现,用字符串类型可以存储,但会过多占用key,浪费内存。

可以使用hash类型存储: hmset user:1 name name age 19。

2.命令: hset key field value

设值: hset usetr:1name name //成功返回1失败0

取值: hget user:1 name //返回name

删值: hdel user:1 age

计算个数: hset user:1 name name;hset user:1 AGE 23; hlen user:1 //返回2 user:1有两个属性值

批量设值: hmset user:2 name name age 20 sex boy

批量取值: hmget user:2 name age sex

判断field是否存在:hexists user:2 name //若存在返回1不存在返回0

获取所有的field: hkeys user:2

获取user:2所有的value: hvals user:2

获取user:2 所有field与value: hgetall user:2 //name age sex name 19 boy

增加1: hincrby user:2 age 1 //age+1

Hincrbyfloat user:2 age 2//浮点型加2

3. 应用场景

hash应用场景

Hash类型是稀疏,每个键可以有不同的field,若用redis 模拟做关系复杂查询开发困难,维护成本高

4. 三种方案实现用户信息存储优缺点:

1) 原生: set user:1 name name

Set user:1 age 19

优点: 简单直观,每个键对应一个值

缺点: 键数过多,占用内存多,用户信息过于分散,不用于生成环境

2) 将对象序列化存入reds

Set user:1 serialize(user)

优点: 编程简单,使用合理可减少内存空间消耗

缺点: 要控制ziplist与hashtable 两种编码转换,且hashtable会消耗更多内存

总结: 对于更新不多的情况下,可以使用序列化,对于value值大于64字节可以使用hash类型

4数据结构-列表(list)

1. 用来存储多个有序的字符串,一个列表最多可以存2的32次方减1个元素

存储

因为有序,可以通过索引下标获取元素或某个范围元素列表,列表元素可以重复

2. 列表命令:

常用命令

添加命令:

Rpush name cba //从右向左插入 cba 返回3

Lrange name 0-1 //从左道右获取列表所有元素 返回cba

Lpush key c b a //从左向右插入cba

Linsert name before b teacher //在b之前插入teacher,after为之后,使用lrange name 0-1 查看:c teacher b a

查找命令:

Lrange key start end //索引下标特点: 从左道右为0到N-1

Lindex name -1 //返回最右末尾a,-2返回b

Lien name //返回当前列表长度

Lpop name //把最左边的第一个元素c删除

Rpop name //把最右边的元素a删除

5. 数据结构-集合

1. 保存多元素,与列表不一样的是不允许有重复元素,且集合是无序的,一个集合最多可以存2的32方减1个元素,除了支持增删改查,还支持集合交集,并集,差集

set集合

2. 命令:

Exists user //检查user键是否存在

Sadd user a b c //向user 插入3个元素返回3

Sadd user a b //若在插入相同元素则会重复无效返回0

Smenmber user// 获取user 的所有元素,返回结果无序

Srem user a //返回1,删除a元素

Scard user // 返回2,计算元素个数

Sismember user a //判断元素是否在集合存在,存在返回1,不存在0

Sranmember user 2//随机返回2个元素,2为元素个数

Spop user 2 //随机返回2个元素a b 并将 a b 从集合中删除

集合交集:

Sadd user:1 name 24 boy

Sadd user:2 name 24 girl //初始化两个集合

Sinter user:1 user:2 //求集合交集 返回24

3. 使用场景

标签,社交,查询,智能推荐

6. 数据类型-有序集合

1. 与集合有联系,不能重复的成员

集合关系

2. 与list set 对比

set对比

3. 命令:

Zadd key score member [.....]

Zadd user:name 200 name //name的点赞数1,返回操作成功的条数1

Zadd user: name 200 name 120 mike 100 lee //返回3

Zadd test:1 nx 100 name //键test:1 必须不存在 主要用于添加

Zrange test:1 0-1 withscores //查看点赞与成员名

Zcard test:1 //计数成员个数返回1

查看点赞数:

Zadd test:2 nx 100 name //新增一个集合

Zscore test:2 name //查找name的点赞数返回100

7. 全局命令

1. 查看所有键: keys *, set school enjoy, set hello world

2. 键总数: dbsize

3. 检查键是否存在: exists key //存在返回1,不存在返回0

4. 删除键: del key

5. 键过期: expire key seconds // set name test expire name 10 //10秒过期

6. 键的数据结构类型: type key

8. 键的遍历

Redis 提供了两个命令来遍历所有的键

1. 键全量遍历

Mset country china city bj name name //设置3个字符串键值对

Keys * //返回所有的键 *匹配任意字符串多个字符

Keys *y //以结尾的键

Keys n*e //以n开头以e结尾返回name

Keys n?m //?号代表只匹配一个字符,返回name 全局匹配

Keys n?m* //返回name

Keys [j,i]* //返回以j l 开头的所有键

9. 渐进式遍历

Mset a a b b //初始化26个字母键值对

字符串类型:

SCAN命令用于迭代当前数据库中的数据库

返回结果为: 用于下一次迭代的新的游标4096:所有被迭代的元素如果数据集合不是以哈希表做为底层实现的话,则sacn类命令无视count 选项,直接返回数据集合的所有元素

Scan 0 match n*//匹配以n开头的键,最大是取10条第一条scan 0开始

六 redis数据库管理

1. select 0//共16个库 0--15 select 切换数据库

2. Set name name

3. Select 1

4. Get name //隔离了,取不到,和mysql不同库一样

其中redis3.0以后的版本慢慢弱化了这个功能,如在redis cluster 中只允许0数据库

原因:

1) redis 单线程,如果多个库,这些库使用同一个cpu 彼此会有影响

2) 多数据库,调试与运维麻烦,若有一个慢查询,会影响其他可以查询速度

3) 来回切换,容易混乱

Flushdb: 只清空当前数据库的键值对 dbsize 0

Flushall: 清空所有库的键值对

查看redis版本_redis详细介绍相关推荐

  1. win7 查看php版本信息,window_Windows系统版本怎么看?2种查看windows版本的方法介绍,前段时间微软正式开始向Win7和 - phpStudy...

    Windows系统版本怎么看?2种查看windows版本的方法介绍 前段时间微软正式开始向Win7和Win8用户推送免费Win10更新提示,不过很多电脑用户表示没有收到,这主要由于目前Win10推送主 ...

  2. Centos7查看redis版本(问题:redis-cli: command not found)

    Centos7查看redis版本 redis安装成功后,查看redis版本命令:redis-server -V即可查看redis版本 实际我们查看时都会遇到这个问题:redis-cli: comman ...

  3. 查找linux中的redis在哪个文件夹,linux查看redis版本有哪些步骤?在Linux中基本操作redis有哪些?...

    通常我们是在windows系统下安装软件,查看版本是通过命令行的方式,今天给大家由小编介绍我们如何在Linux的操作系统下,通过哪些步骤来查看redis的版本以及有哪些基本操作呢?下面我们一起来了解下 ...

  4. 【Linux系列】Linux查看Redis版本信息

    目录 一.详细介绍 1.redis-server -v 1.1 进入容器 1.2 查询redis-server 目录 1.3 进入对应目录 1.4 执行命令 2.redis-cli -v 1.1 进入 ...

  5. linux 查看u盘文件,详细介绍Linux系统下检测U盘是不是已经连接的方法

    Linux操作系统是基于Unix操作系统发展而来的一种克隆系统,它诞生于1991年的10月5日(这是第一次正式向外公布的时间).今天就跟着小编一起来看一看:详细介绍linux系统下检测U盘是不是已经连 ...

  6. 查看Redis版本信息

    linux环境下查看redis的版本: 查看redis的版本有两种方式: redis-server –version 和 redis-server -v 得到的结果是:Redis server v=3 ...

  7. linux查看redis命令,linux查看redis版本怎么操作?具体示例

    对于有相关开发经验的朋友来说,linux作为一套免费使用和自由传播的类UNIX操作系统,相信你们肯定是比较亲切的,那么今天我们一起了解的是,怎么用linux查看redis版本号? 工具/原料:linu ...

  8. 查看redis进程_redis安装(启动三种方式)

    一.安装redis 第 1 步:下载redis安装包 [root@hadoop105 redis]# wget http://download.redis.io/releases/redis-4.0. ...

  9. redis存10万条数据_redis详细介绍

    一 介绍 1. redis介绍(redis安装在磁盘,redsi数据存储在内存) 服务器交互 2. Redis是一种基于键值对(key-value)数据库,其中value可以为string. hash ...

最新文章

  1. (剑指Offer)面试题54:表示数值的字符串
  2. Oracle三级联动单表地址数据
  3. 【杂谈】为了让大家学好深度学习模型设计和优化,有三AI都做了什么
  4. 关于构造与析构过程中调用虚函数的问题
  5. 鼠标划过图片进行缩放效果
  6. 【GIS导论】实验六 叠加分析
  7. 高校GIS房地产管理系统
  8. 【js练习】鼠标移入和移出事件
  9. PNAS:植物香豆素塑造拟南芥合成根系微生物组的组成
  10. 电力系统潮流程序C语言,电力系统潮流C语音程
  11. 黑客攻击入门:DNS欺骗、ARP攻击和钓鱼网站制作
  12. web的标准网页设计与php课后,web网页设计尺寸规范
  13. Flex一些总结以及遇到的一些面试题
  14. Conflux 生态项目扶持计划首批扶持项目出炉
  15. Discover中英文显示问题
  16. 算法交易的成长与未来
  17. 阿拉丁统计 2.0丨开源 SDK 生态,既能开箱即用,又能自定义扩展,让你的企业数字化进程“兔飞猛进”
  18. 如何使用汇编语言求最大公约数/共因子/gcd
  19. 攻防世界reverse新手区——simple-unpack(upx脱壳)
  20. python字符串知识点_python字符串的相关知识点

热门文章

  1. Get SQL String From Query Object In Entity Framework
  2. 团队博客第五周 运行与总结
  3. Struts1 中的 global-forward
  4. vla点转为lisp点_专家们说,中国股市将进入牛市,大盘可能超12000点是真吗?
  5. c语言 构造类,C语言之构造类型
  6. box-sizing详解
  7. springmvc提供RestController方法接口返回json数据中文乱码
  8. ubuntu php 源,Ubuntu18.04更换国内源
  9. 计算机组成原理设计一个累加和,组成原理课设关于累加器.doc
  10. lua检测表中是否有某个值,如何检查表是否包含Lua中的元素?