当前位置: 首页 > news >正文

网易在线客服系统怎么给网站做优化

网易在线客服系统,怎么给网站做优化,php做视频网站,西安网约车目录 通用命令是什么 SET & GET keys EXISTS DEL EXPIRE TTL redis 的过期策略 定时器策略 基于优先级队列定时器 基于时间轮的定时器 TYPE 通过 redis 客户端和 redis 服务器交互。 所以需要使用 redis 的命令,但是 redis 的命令非常多。 通用命令…

目录

通用命令是什么

SET & GET

keys

EXISTS

DEL

EXPIRE

TTL

redis 的过期策略

定时器策略

基于优先级队列定时器

基于时间轮的定时器

TYPE


通过 redis 客户端和 redis 服务器交互。

所以需要使用 redis 的命令,但是 redis 的命令非常多。

通用命令是什么

在 redis 中,对于存入的不同数据的操作的命令是不同的,但是还是有一些命令是通用的,而这些对所有数据类型都通用的命令就是 ”通用命令“。

在介绍通用命令之前,其实我们可以去官方网站去学习一些有关 redis 的一些内容。

[Redis](https://redis.io/) 

我们就可以在主页面上有一个 search 可以用来搜索命令。

这里我们可以启动客户端,然后我们可以使用 ping 命令来验证一下连通性。

127.0.0.1:6379> ping
PONG

如果联通成功的话,那么就会返回 pong,实际上 redis 的命令一般都是大写和 mysql 是一样的,虽然小写也可以支持。

SET & GET

redis 是按照键值对的方式来存储的。

  • get:根据 key 来获取对应的 value

  • set:把 key 和 value 设置进去

这里的 key 和 value 都是字符串。

set key value
如果设置成功返回 OK

上面就是 set 的简单语法,set 后面跟一个 key 在跟一个value。

上面虽然说 key 和 value都是字符串,但是在set 的时候并不需要加双引号或者单引号。

127.0.0.1:6379> SET key1 value1
OK

下面可以通过 key 来获得 value

get key
如果有 key 就会返回对应的 value,否则就会返回 nil,上面的 nil 就是表示空或者不存在的意思。
127.0.0.1:6379> get key1
"value1"
127.0.0.1:6379> get key2
(nil)

KEYS

  • keys 可以查询当前 redis 中的 key

KEYS pattern
  • pattern 就是匹配模式

  • ?:表示匹配任意多一字符

  • *:匹配任意多个字符

  • [abc..]:匹配方括号里面的字符

  • [^abc]:匹配除非方括号里面的字符

  • [a-b]:匹配a~b中的字符

下面可以试一下

插入一批数据

127.0.0.1:6379> set hello 1
OK
127.0.0.1:6379> set hallo 1
OK
127.0.0.1:6379> set hbllo 1
OK
127.0.0.1:6379> set heeeeello 1
OK
127.0.0.1:6379> keys *
1) "hallo"
2) "hbllo"
3) "heeeeello"
4) "hello"
5) "key1"
  • 匹配任意一个字符

    127.0.0.1:6379> keys h?llo
    1) "hallo"
    2) "hbllo"
    3) "hello"

  • 匹配任意多个字符

    127.0.0.1:6379> keys h*llo
    1) "hallo"
    2) "hbllo"
    3) "heeeeello"
    4) "hello"

  • 匹配括号里的内容

    127.0.0.1:6379> keys h[ab]llo
    1) "hallo"
    2) "hbllo"

  • 匹配非括号里面内容

    127.0.0.1:6379> keys h[^e]llo
    1) "hallo"
    2) "hbllo"

  • 匹配括号里范围

    127.0.0.1:6379> keys h[ab]llo
    1) "hallo"
    2) "hbllo"

EXISTS

  • 该命令用来查询key 是否存在

exixts key [key...]
  • 该命令可以在后面跟多个 key

  • 返回查询到 key 的个数

  • 时间复杂度位O(N) N为key 的个数

  • 查询

    127.0.0.1:6379> exists hello hallo
    (integer) 2

DEL

  • 删除 key 以及对应的 value

del key [key...]
  • del 后面也可以跟多个 key

  • 返回值表示删除 key 的个数

  • 删除一个数据

    127.0.0.1:6379> del hello
    (integer) 1

  • 删除多个数据

    127.0.0.1:6379> del hallo hbllo
    (integer) 2

  • 删除不存在的数据

    127.0.0.1:6379> del abc
    (integer) 0

EXPIRE

  • 设置过期时间,单位秒

expire key second
  • expire 必须要是已经有了的 key

  • 返回值为 1 表示设置成功,0 表示失败

  • 但是 second 对于计算机来说时间太长,其实还有一个 pexpire 的单位为毫秒

  • 设置过期时间

    127.0.0.1:6379> expire hello 10
    (integer) 1

  • 为空 key 设置过期时间

    127.0.0.1:6379> expire abc 10
    (integer) 0

为已有的 key 设置过期时间返回 1,为没有的 key 设置过期时间返回 0,表示设置失败

而且设置成功后,等时间到期后,该key 会自动删除

TTL

  • 查看过期时间,和 expire 对对应

ttl key
  • 返回的单位是 秒

  • 如果想要查看毫秒级的就是 pttl 也就是和pexpire 对应

  • 返回值为剩余的过期时间,如果是 -1 表示没有设置过期时间,如果是 -2 表示没有该 key

  • 设置过期时间

    127.0.0.1:6379> expire hello 30
    (integer) 1

  • 查看过期时间

    127.0.0.1:6379> ttl hello
    (integer) 25

  • 查看没有设置的过期时间 key 的过期时间

    127.0.0.1:6379> ttl key1
    (integer) -1

  • 查看没有 key 的过期时间

    127.0.0.1:6379> ttl abc
    (integer) -2

redis 的过期策略

redis 的过期策略主要是两个方面:

  • 定期删除

  • 惰性删除

  • 首先说这个惰性删除,惰性删除就是每当用户访问该数据的时候, redis 会进行一番检查,如果是过期的,那么 redis 就会删除掉该 key,然后返回 nil

  • 定期删除就是,每隔一段时间 redis 就会抽取一部分数据进行检查过期时间,如果过期的话就会删除

  • 为什么是一部分数据呢?因为 redis 是单线程的,如果数据量太大的话,那么就会是 redis 阻塞,导致其他的服务无法被处理,所以 redis 每次都抽取一部分数据进行检查

  • 但是两个策略结合效果却也是一般

定时器策略

redis 过期策略还可以通过定时器来解决,但是这个定时器 redis 并没有实现,但是可以介绍一下如果使用定时器那么可以如何实现

基于优先级队列定时器

  • 可以将所有的过期时间的 key 都放到一个优先级队列里面

  • 优先级就是过期时间,过期时间越近,那么优先级越高

  • 所以第一个元素一定是最先过期的,所以我们只需要检查第一个元素即可

  • 而第一个元素也不一定要一直检查,可以隔一段时间检查一下

  • 然后就可以分一个线程,让该线程来检查过期时间,如果发现过期时间还没到,则可以先让该线程挂起

基于时间轮的定时器

  • 首先可以有一个循环队列,而循环队列里面的每一格代表一个一段时间的过期时间

  • 每个格子里面可以保存一个链表,该链表里面的所有事件的过期时间都在该格子表示的时间范围

  • 其中一个指针从循环队列特定位置开始,每隔一段时间(格子表示的时间)就向后走一个,然后检查里面的过期时间,过期就删除

  • 遇到新的事件就查看该事件的过期事件,push 到对应的格子里

虽然 redis 并没有使用这两种方法,但是这两种方法也是比较高效的处理过期事件的方法

TYPE

  • 返回 key 对应的 value 的类型

type key
  • 返回 key 对应的 value 的类型

  • 在 redis 里面 key 都是 string 类型

  • 如果没有key返回 none

  • 插入不同数据

    127.0.0.1:6379> lpush key2 111 222 333
    (integer) 3
    127.0.0.1:6379> sadd key3 aaa bbb ccc
    (integer) 3
    127.0.0.1:6379> hset key4 field1 value1
    (integer) 1

  • 查看不同数据类型

    127.0.0.1:6379> type key1
    string
    127.0.0.1:6379> type key2
    list
    127.0.0.1:6379> type key3
    set
    127.0.0.1:6379> type key4
    hash

http://www.tj-hxxt.cn/news/86727.html

相关文章:

  • 软件设计属于什么专业广东seo推广
  • 制作网站公司哪个好a站
  • 政府网站建设的脚注舟山seo
  • 做围棋题最好的网站2022智慧树互联网与营销创新
  • 微信做爰视频网站如何建立网址
  • 电子商务网站建设实训作业购物网站哪个最好
  • 网站建设那好广东seo推广哪里好
  • 网站页面设计的网址品牌营销策划十大要点
  • 石家庄net网站开发企业管理培训机构
  • macos系统做网站海外推广代理商
  • 邢台网站开发培训学校百度上如何做优化网站
  • 上海哪家公司提供专业的网站建设互联网营销师培训机构哪家好
  • acm手表网站深圳全网营销哪里好
  • wordpress链接跳转插件合肥网站seo公司
  • 南京做信息登记公司网站百度关键词数据
  • 汉口专业网站推广公司互联网产品营销策划方案
  • 深圳做兼职的网站设计营销推广方案ppt案例
  • 设计灵感网站整理百度搜索量查询
  • 网站建设时送的ppt方案微博推广价格表
  • firework做网站教程公司网站设计报价
  • 宁都网站建设关键词的选取原则有
  • 网站开发计划上海还能推seo吗
  • 设计类网站教育培训机构排名
  • 南京做网站多少钱如何自己弄个免费网站
  • 网站建设的7种流程外贸网站搭建
  • 编程猫的网站是什么郑州网络推广
  • 打开网站的语音播报怎么做抖音营销软件
  • bbs网站天津seo推广软件
  • 蓝天网站建设上海优化seo
  • 做网站应该做哪方面的收录优美图片app