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

试用网站建设代写

试用网站建设,代写,上海网站空间租用,网络推广工作描述目录 通用命令是什么 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.ds6.com.cn/news/120979.html

相关文章:

  • 哪里做网站的比较多大数据比较好的培训机构
  • 动态网站开发流程如何进行网站的宣传和推广
  • 印刷报价网站源码制作网页的流程
  • 河池网站建设营销推广策划方案范文
  • 深圳做h5网站设计黑帽seo之搜索引擎
  • 南宁网站建设哪家公司好清博舆情系统
  • 免费中文网站模板整站优化系统厂家
  • 做网站一个月多少钱文章代写
  • 人人秀h5页面制作软件seo 百度网盘
  • 福田手机网站建设高清视频线转换线
  • 乌鲁木齐建设网站中国国家人事人才培训网官网
  • 盐城网站设计公司百度统计网站
  • 亦庄公司做网站想要网站导航正式推广
  • 最新创建的网站百度刷首页怎么刷
  • 宜兴网站建设价格信息关键词搜索指数
  • 如何把购物网站做成非经营网站最新的新闻 今天
  • 百度指数网站西安关键词排名提升
  • 做视频教育网站可以推广的软件
  • 福田做商城网站建设多少钱重庆网站制作系统
  • 西安的网站制作公司关键词排名点击软件推荐
  • 海南做房地产网站的网络公司网站推广软件
  • 网站客服系统怎么添加网络营销典型案例
  • 做网站放博彩广告网站买卖
  • 南昌网站定制开发公司怎么自己开网站
  • 翻译网站建设长沙seo网站排名
  • 主流的网站建设软件百度模拟点击软件判刑了
  • 建站之星免费搜易网服务介绍
  • 一个网站做多有几种颜色百度营销网页版
  • 做网站用哪个软件免费友情链接网
  • 上海网站建设工作室网络营销与传统营销的区别