热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

Redis再回首

1、NoSql介绍2、Redis概述3、Redis安装4、Redis性能测试工具5、Redis基础知识6、Redis五个基础数据类型1、NoSql介绍NoSql四大分类

1、NoSql介绍
2、Redis概述
3、Redis安装
4、Redis性能测试工具
5、Redis基础知识
6、Redis五个基础数据类型



1、NoSql介绍

NoSql四大分类:
KV键值对:



  • 新浪:Redis

  • 阿里、百度:Redis+memcache
    文档型数据库(Bson格式和Json一样):

  • MongoDB

    • 基于分布式文件存储的数据库,C++编写,主要存储大量的文档;

    • 介于非关系型数据和关系型数据库的中间产品,mongoDB是非关系型数据库中功能最丰富的,最像关系型数据库的非关系型数据库。



  • CouchDB
    列存储数据库

  • Hbase

  • 分布式文件系统
    图关系数据库(不是存图形的,放的是关系比如:朋友圈社交网络,广告推荐)

  • Neo4j

  • InfoGrid
    在这里插入图片描述


2、Redis概述


www.redis.cn


1、Redis(Remote Dictionary Server ),即远程字典服务,是一个开源的使用ANSI C语言编写、支持网络、可基于内存亦可持久化的日志型、Key-Value数据库,并提供多种语言的API。
2、Redis作用



  • 内存存储、可以持久化(rdb、aof)

  • 效率高,可以高速缓存

  • 发布订阅系统(简单消息功能)

  • 地图信息分析

  • 计时器、计数器(页面浏览量等)

  • 等等
    3、特性

  • 数据类型多样

  • 持久化

  • 集群

  • 事务

  • 等等

默认端口6379的由来:redis作者当时特别喜欢一个女明星,然后她的名字对应九宫格的数字是6379。


3、Linux下Redis安装

直接拿官网最新版:https://redis.io/
然后丢到linux上
在这里插入图片描述
解压
在这里插入图片描述


4、Redis性能测试工具

redis-benchmark 官方自带压力测试工具
redis-benchmark -h 127.0.0.1 -p 6379 -c 100 -n 10000
命令 菜鸟截图:
在这里插入图片描述
结果分析:
在这里插入图片描述


5、Redis基础知识

Redis默认有16个数据库,默认使用第0个数据库。
在这里插入图片描述


select切换数据库命令

#切换数据库到第四个
select 3


keys查看全部key的命令

#查看全部都key
keys *


flushdb清空当前数据库命令

flushdb


flushall清空全部数据库命令

flushall


exists是否存在命令

exists key


move移动key命令

将key移动到数据库1号
move key 1


expire设置key时效

expire key 10设置key十秒后过期


ttl查看key的剩余时间

ttl key


type查看数据类型

type key


Redis单线程

官方表示,Redis是基于内存操作,cpu不是Redis性能瓶颈,Redis的瓶颈是根据机器的内存和网络带宽,既然可以使用单线程来实现,就使用单线程了。

数据直接存储在内存上,操作数据速度非常快,无需使用多线程导致cpu指针的切换造成不必要的资源损失。


6、Redis五个基础数据类型


String


append追加命令

append key "hello"在key的值末尾添加 hello
如果当前key不存在,则新建这个key(相当于set)


strlen查询值的长度

strlen key


incr加一命令

incr key给key的值加一


decr减一命令

decr key给key的值减一


incrby增加步长,指定增量

incryby key 10加10


decrby减少步长,指定增量

decrby key 10减10


getrange获取字符串指定索引区间的值

getrange key 0 3获取key值从0到3位置的值
getrange key 0 -1获取key值的全部字符串


setrange把某个位置的值替换成新的值

setrange key 1 xx将key值从指定位置开始,替换为新的值


setex设置过期时间命令

set with expire
setex key 30 "hello "设置key,值为hello,30秒后过期


setnx如果不存在则执行set

set if not exist
```setnx key “world”````如果key不存在则存入key,值为world,如果存在,则不操作
(设置分布式锁时常用)


mset批量设置值

mset key1 val1 key2 val2存入key1和key2,值分别为val1和val2


mget批量获取值

mget key1 key2同事获取key1和key2的值


msetnx批量设置

原子性,只有同时成功,或者同时失败,不会部分存入部分不存入。


对象操作思想

设置一个key为user,值为json格式的数据保存用户信息
set user {name:xiaoming,age:3}
这样做不便于解析,应使用:
mset user:name xiaoming user:age 3


getset命令

先执行get,在执行set,若不存在则返回null
getset key 123返回key原来的值,并将key的值设置为123
String类似的使用场景:value除了是存储字符串之外还可以是数字;



  • 计数器

  • 统计数量(阅读量+1)

  • 粉丝数

  • 对象缓存存储


List



  • 在redis里面,可以吧list设置成栈、队列、阻塞队列;

  • 数据可以重复;

所有的list命令,都是以 “l” 开头。


lpush存入命令

存入时的顺序是 one two three,而取出时的顺序是 three two one,先进后出FILO


rpush存入命令

将数据存入list的末尾,最后一个位置
rpush list four


lrange获取列表对应位置的值

lrange list 0 3第0位置到第3位置


lpop移除列表第一个元素

lpop list移除list的左边第一个值


rpop移除列表最后一个元素

rpop list移除list的最右边最后一个元素


lindex通过下标获取值

lindex list 0获取第0个位置的值


llen获取长度

llen list


lrem移除指定个数的值

lrem list 2 one移除list中的 两个 one值


ltrim截取指定位置区间的值

ltrim list 1 2截取从1到2位置的值,覆盖原来的值,保留截取后的值


rpoplpush移除最后一个元素加入另一个list的第一个位置

rpoplpush list1 list2将list1的最后一个值删除,并在list的第一个位置插入这个值


lset给列表指定位置替换/设置 值

lset list 1 val给list的1下标位置的值,替换为“val”
若list的1位置没有值,则会报错:不存在


linsert给list指定位置的插入一个值

linsert list before val1 val2指的是在值为val1的位置 前 插入值:val2
linsert list afterval1 val2指的是在值为val1的位置 后 插入值:val2

小结:
可以想象成链表结构,有各种变化,可以从左边插入、右边插入或改动,但从中间操作元素效率相对较低;
简单的消息队列:Lpush Rpop
栈:Lpush Lpop


推荐阅读
  • 本文介绍了Java工具类库Hutool,该工具包封装了对文件、流、加密解密、转码、正则、线程、XML等JDK方法的封装,并提供了各种Util工具类。同时,还介绍了Hutool的组件,包括动态代理、布隆过滤、缓存、定时任务等功能。该工具包可以简化Java代码,提高开发效率。 ... [详细]
  • t-io 2.0.0发布-法网天眼第一版的回顾和更新说明
    本文回顾了t-io 1.x版本的工程结构和性能数据,并介绍了t-io在码云上的成绩和用户反馈。同时,还提到了@openSeLi同学发布的t-io 30W长连接并发压力测试报告。最后,详细介绍了t-io 2.0.0版本的更新内容,包括更简洁的使用方式和内置的httpsession功能。 ... [详细]
  • 图解redis的持久化存储机制RDB和AOF的原理和优缺点
    本文通过图解的方式介绍了redis的持久化存储机制RDB和AOF的原理和优缺点。RDB是将redis内存中的数据保存为快照文件,恢复速度较快但不支持拉链式快照。AOF是将操作日志保存到磁盘,实时存储数据但恢复速度较慢。文章详细分析了两种机制的优缺点,帮助读者更好地理解redis的持久化存储策略。 ... [详细]
  • Nginx使用AWStats日志分析的步骤及注意事项
    本文介绍了在Centos7操作系统上使用Nginx和AWStats进行日志分析的步骤和注意事项。通过AWStats可以统计网站的访问量、IP地址、操作系统、浏览器等信息,并提供精确到每月、每日、每小时的数据。在部署AWStats之前需要确认服务器上已经安装了Perl环境,并进行DNS解析。 ... [详细]
  • 开发笔记:加密&json&StringIO模块&BytesIO模块
    篇首语:本文由编程笔记#小编为大家整理,主要介绍了加密&json&StringIO模块&BytesIO模块相关的知识,希望对你有一定的参考价值。一、加密加密 ... [详细]
  • 本文介绍了Redis的基础数据结构string的应用场景,并以面试的形式进行问答讲解,帮助读者更好地理解和应用Redis。同时,描述了一位面试者的心理状态和面试官的行为。 ... [详细]
  • 计算机存储系统的层次结构及其优势
    本文介绍了计算机存储系统的层次结构,包括高速缓存、主存储器和辅助存储器三个层次。通过分层存储数据可以提高程序的执行效率。计算机存储系统的层次结构将各种不同存储容量、存取速度和价格的存储器有机组合成整体,形成可寻址存储空间比主存储器空间大得多的存储整体。由于辅助存储器容量大、价格低,使得整体存储系统的平均价格降低。同时,高速缓存的存取速度可以和CPU的工作速度相匹配,进一步提高程序执行效率。 ... [详细]
  • 本文介绍了sqlserver云存储和本地存储的区别,云存储是将数据存储在网络上,方便查看和调用;本地存储是将数据存储在电脑磁盘上,只能在存储的电脑上查看。同时提供了几种启动sqlserver的方法。此外,还介绍了如何导出数据库的步骤和工具。 ... [详细]
  • SpringMVC接收请求参数的方式总结
    本文总结了在SpringMVC开发中处理控制器参数的各种方式,包括处理使用@RequestParam注解的参数、MultipartFile类型参数和Simple类型参数的RequestParamMethodArgumentResolver,处理@RequestBody注解的参数的RequestResponseBodyMethodProcessor,以及PathVariableMapMethodArgumentResol等子类。 ... [详细]
  • Vagrant虚拟化工具的安装和使用教程
    本文介绍了Vagrant虚拟化工具的安装和使用教程。首先介绍了安装virtualBox和Vagrant的步骤。然后详细说明了Vagrant的安装和使用方法,包括如何检查安装是否成功。最后介绍了下载虚拟机镜像的步骤,以及Vagrant镜像网站的相关信息。 ... [详细]
  • 一次上线事故,30岁+的程序员踩坑经验之谈
    本文主要介绍了一位30岁+的程序员在一次上线事故中踩坑的经验之谈。文章提到了在双十一活动期间,作为一个在线医疗项目,他们进行了优惠折扣活动的升级改造。然而,在上线前的最后一天,由于大量数据请求,导致部分接口出现问题。作者通过部署两台opentsdb来解决问题,但读数据的opentsdb仍然经常假死。作者只能查询最近24小时的数据。这次事故给他带来了很多教训和经验。 ... [详细]
  • 本文介绍了H5游戏性能优化和调试技巧,包括从问题表象出发进行优化、排除外部问题导致的卡顿、帧率设定、减少drawcall的方法、UI优化和图集渲染等八个理念。对于游戏程序员来说,解决游戏性能问题是一个关键的任务,本文提供了一些有用的参考价值。摘要长度为183字。 ... [详细]
  • OpenMap教程4 – 图层概述
    本文介绍了OpenMap教程4中关于地图图层的内容,包括将ShapeLayer添加到MapBean中的方法,OpenMap支持的图层类型以及使用BufferedLayer创建图像的MapBean。此外,还介绍了Layer背景标志的作用和OMGraphicHandlerLayer的基础层类。 ... [详细]
  • 如何使用PLEX播放组播、抓取信号源以及设置路由器
    本文介绍了如何使用PLEX播放组播、抓取信号源以及设置路由器。通过使用xTeve软件和M3U源,用户可以在PLEX上实现直播功能,并且可以自动匹配EPG信息和定时录制节目。同时,本文还提供了从华为itv盒子提取组播地址的方法以及如何在ASUS固件路由器上设置IPTV。在使用PLEX之前,建议先使用VLC测试是否可以正常播放UDPXY转发的iptv流。最后,本文还介绍了docker版xTeve的设置方法。 ... [详细]
  • 工作经验谈之-让百度地图API调用数据库内容 及详解
    这段时间,所在项目中要用到的一个模块,就是让数据库中的内容在百度地图上展现出来,如经纬度。主要实现以下几点功能:1.读取数据库中的经纬度值在百度上标注出来。2.点击标注弹出对应信息。3 ... [详细]
author-avatar
男孩艹艹
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有