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

源码屋武汉网站建设优化

源码屋,武汉网站建设优化,伊克昭盟seo,西宁专业做网站文章目录 1. string2. list3. hash4. set5. sorted set 你可以自己本机安装 redis 或者通过 redis 官网提供的在线 redis 环境。 1. string 介绍 :string 数据结构是简单的 key-value 类型。虽然 Redis 是用 C 语言写的,但是 Redis 并没有使用 C 的字符串…

文章目录

    • 1. string
    • 2. list
    • 3. hash
    • 4. set
    • 5. sorted set

你可以自己本机安装 redis 或者通过 redis 官网提供的在线 redis 环境。

在这里插入图片描述

1. string

  1. 介绍 :string 数据结构是简单的 key-value 类型。虽然 Redis 是用 C 语言写的,但是 Redis 并没有使用 C 的字符串表示,而是自己构建了一种 简单动态字符串(simple dynamic string,SDS)。相比于 C 的原生字符串,Redis 的 SDS 不光可以保存文本数据还可以保存二进制数据,并且获取字符串长度复杂度为 O(1)(C 字符串为 O(N)),除此之外,Redis 的 SDS API 是安全的,不会造成缓冲区溢出。

  2. 常用命令: set,get,strlen,exists,dect,incr,setex 等等。

  3. 应用场景 :一般常用在需要计数的场景,比如用户的访问次数、热点文章的点赞转发数量等等。

    作业 去深入探究 sds的结构

下面我们简单看看它的使用!

普通字符串的基本操作:

127.0.0.1:6379> set key value #设置 key-value 类型的值
OK
127.0.0.1:6379> get key # 根据 key 获得对应的 value
"value"
127.0.0.1:6379> exists key  # 判断某个 key 是否存在
(integer) 1
127.0.0.1:6379> strlen key # 返回 key 所储存的字符串值的长度。
(integer) 5
127.0.0.1:6379> del key # 删除某个 key 对应的值
(integer) 1
127.0.0.1:6379> get key
(nil)

批量设置 :

127.0.0.1:6379> mset key1 value1 key2 value2 # 批量设置 key-value 类型的值
OK
127.0.0.1:6379> mget key1 key2 # 批量获取多个 key 对应的 value
1) "value1"
2) "value2"

计数器(字符串的内容为整数的时候可以使用):

127.0.0.1:6379> set number 1
OK
127.0.0.1:6379> incr number # 将 key 中储存的数字值增一
(integer) 2
127.0.0.1:6379> get number
"2"
127.0.0.1:6379> decr number # 将 key 中储存的数字值减一
(integer) 1
127.0.0.1:6379> get number
"1"

过期

127.0.0.1:6379> expire key  60 # 数据在 60s 后过期
(integer) 1
127.0.0.1:6379> setex key 60 value # 数据在 60s 后过期 (setex:[set] + [ex]pire)
OK
127.0.0.1:6379> ttl key # 查看数据还有多久过期
(integer) 56

2. list

  1. 介绍list 即是 链表。链表是一种非常常见的数据结构,特点是易于数据元素的插入和删除并且且可以灵活调整链表长度,但是链表的随机访问困难。许多高级编程语言都内置了链表的实现比如 Java 中的 LinkedList,但是 C 语言并没有实现链表,所以 Redis 实现了自己的链表数据结构。Redis 的 list 的实现为一个 双向链表,即可以支持反向查找和遍历,更方便操作,不过带来了部分额外的内存开销。
  2. 常用命令: rpush,lpop,lpush,rpop,lrange、llen 等。
  3. 应用场景: 发布与订阅或者说消息队列、慢查询。

下面我们简单看看它的使用!

通过 rpush/lpop 实现队列:

127.0.0.1:6379> rpush myList value1 # 向 list 的头部(右边)添加元素
(integer) 1
127.0.0.1:6379> rpush myList value2 value3 # 向list的头部(最右边)添加多个元素
(integer) 3
127.0.0.1:6379> lpop myList # 将 list的尾部(最左边)元素取出
"value1"
127.0.0.1:6379> lrange myList 0 1 # 查看对应下标的list列表, 0 为 start,1为 end
1) "value2"
2) "value3"
127.0.0.1:6379> lrange myList 0 -1 # 查看列表中的所有元素,-1表示倒数第一
1) "value2"
2) "value3"

通过 rpush/rpop 实现栈:

127.0.0.1:6379> rpush myList2 value1 value2 value3
(integer) 3
127.0.0.1:6379> rpop myList2 # 将 list的头部(最右边)元素取出
"value3"

如下图来理解:

在这里插入图片描述

通过 lrange 查看对应下标范围的列表元素:

127.0.0.1:6379> rpush myList value1 value2 value3
(integer) 3
127.0.0.1:6379> lrange myList 0 1 # 查看对应下标的list列表, 0 为 start,1为 end
1) "value1"
2) "value2"
127.0.0.1:6379> lrange myList 0 -1 # 查看列表中的所有元素,-1表示倒数第一
1) "value1"
2) "value2"
3) "value3"

通过 lrange 命令,你可以基于 list 实现分页查询,性能非常高!

通过 llen 查看链表长度:

127.0.0.1:6379> llen myList
(integer) 3

3. hash

  1. 介绍 :hash 类似于 JDK1.8 前的 HashMap,内部实现也差不多(数组 + 链表)。不过,Redis 的 hash 做了更多优化。另外,hash 是一个 string 类型的 field 和 value 的映射表,特别适合用于存储对象,后续操作的时候,你可以直接仅仅修改这个对象中的某个字段的值。 比如我们可以 hash 数据结构来存储用户信息,商品信息等等。
  2. 常用命令: hset,hmset,hexists,hget,hgetall,hkeys,hvals 等。
  3. 应用场景: 系统中对象数据的存储。

下面我们简单看看它的使用!

127.0.0.1:6379> hset userInfoKey name "guide" description "dev" age "24"
OK
127.0.0.1:6379> hexists userInfoKey name # 查看 key 对应的 value中指定的字段是否存在。
(integer) 1
127.0.0.1:6379> hget userInfoKey name # 获取存储在哈希表中指定字段的值。
"guide"
127.0.0.1:6379> hget userInfoKey age
"24"
127.0.0.1:6379> hgetall userInfoKey # 获取在哈希表中指定 key 的所有字段和值
1) "name"
2) "guide"
3) "description"
4) "dev"
5) "age"
6) "24"
127.0.0.1:6379> hkeys userInfoKey # 获取 key 列表
1) "name"
2) "description"
3) "age"
127.0.0.1:6379> hvals userInfoKey # 获取 value 列表
1) "guide"
2) "dev"
3) "24"
127.0.0.1:6379> hset userInfoKey name "GuideGeGe" # 修改某个字段对应的值
127.0.0.1:6379> hget userInfoKey name
"GuideGeGe"

4. set

  1. 介绍 : set 类似于 Java 中的 HashSet 。Redis 中的 set 类型是一种无序集合,集合中的元素没有先后顺序。当你需要存储一个列表数据,又不希望出现重复数据时,set 是一个很好的选择,并且 set 提供了判断某个成员是否在一个 set 集合内的重要接口,这个也是 list 所不能提供的。可以基于 set 轻易实现交集、并集、差集的操作。比如:你可以将一个用户所有的关注人存在一个集合中,将其所有粉丝存在一个集合。Redis 可以非常方便的实现如共同关注、共同粉丝、共同喜好等功能。这个过程也就是求交集的过程。
  2. 常用命令: sadd,spop,smembers,sismember,scard,sinterstore,sunion 等。
  3. 应用场景: 需要存放的数据不能重复以及需要获取多个数据源交集和并集等场景

下面我们简单看看它的使用!

127.0.0.1:6379> sadd mySet value1 value2 # 添加元素进去
(integer) 2
127.0.0.1:6379> sadd mySet value1 # 不允许有重复元素
(integer) 0
127.0.0.1:6379> smembers mySet # 查看 set 中所有的元素
1) "value1"
2) "value2"
127.0.0.1:6379> scard mySet # 查看 set 的长度
(integer) 2
127.0.0.1:6379> sismember mySet value1 # 检查某个元素是否存在set 中,只能接收单个元素
(integer) 1
127.0.0.1:6379> sadd mySet2 value2 value3
(integer) 2
127.0.0.1:6379> sinterstore mySet3 mySet mySet2 # 获取 mySet 和 mySet2 的交集并存放在 mySet3 中
(integer) 1
127.0.0.1:6379> smembers mySet3
1) "value2"

5. sorted set

  1. 介绍: 和 set 相比,sorted set 增加了一个权重参数 score,使得集合中的元素能够按 score 进行有序排列,还可以通过 score 的范围来获取元素的列表。有点像是 Java 中 HashMap 和 TreeSet 的结合体。
  2. 常用命令: zadd,zcard,zscore,zrange,zrevrange,zrem 等。
  3. 应用场景: 需要对数据根据某个权重进行排序的场景。比如在直播系统中,实时排行信息包含直播间在线用户列表,各种礼物排行榜,弹幕消息(可以理解为按消息维度的消息排行榜)等信息。
  4. https://blog.csdn.net/qq_38545713/article/details/105439688
127.0.0.1:6379> zadd myZset 3.0 value1 # 添加元素到 sorted set 中 3.0 为权重
(integer) 1
127.0.0.1:6379> zadd myZset 2.0 value2 1.0 value3 # 一次添加多个元素
(integer) 2
127.0.0.1:6379> zcard myZset # 查看 sorted set 中的元素数量
(integer) 3
127.0.0.1:6379> zscore myZset value1 # 查看某个 value 的权重
"3"
127.0.0.1:6379> zrange  myZset 0 -1 # 顺序输出某个范围区间的元素,0 -1 表示输出所有元素
1) "value3"
2) "value2"
3) "value1"
127.0.0.1:6379> zrange  myZset 0 1 # 顺序输出某个范围区间的元素,0 为 start  1 为 stop
1) "value3"
2) "value2"
127.0.0.1:6379> zrevrange  myZset 0 1 # 逆序输出某个范围区间的元素,0 为 start  1 为 stop
1) "value1"
2) "value2"

文章转载自:
http://dinncohyperspecialization.stkw.cn
http://dinncotony.stkw.cn
http://dinncopopish.stkw.cn
http://dinncobarbarise.stkw.cn
http://dinncoscanty.stkw.cn
http://dinncooverthrow.stkw.cn
http://dinncoshowground.stkw.cn
http://dinncohopsacking.stkw.cn
http://dinncodisject.stkw.cn
http://dinncoalkermes.stkw.cn
http://dinncooutvote.stkw.cn
http://dinncooverinspirational.stkw.cn
http://dinncovpd.stkw.cn
http://dinncodiathermanous.stkw.cn
http://dinncotelemarketing.stkw.cn
http://dinncotriternate.stkw.cn
http://dinncocosmopolitism.stkw.cn
http://dinncoirtron.stkw.cn
http://dinncostandardization.stkw.cn
http://dinncosmithite.stkw.cn
http://dinncolollapalooza.stkw.cn
http://dinncofarceur.stkw.cn
http://dinncoreps.stkw.cn
http://dinncospencerian.stkw.cn
http://dinncodelegant.stkw.cn
http://dinncoapologia.stkw.cn
http://dinncocatfacing.stkw.cn
http://dinncosurfie.stkw.cn
http://dinncovicarage.stkw.cn
http://dinncokeepsake.stkw.cn
http://dinncopanegyrist.stkw.cn
http://dinncoundiminished.stkw.cn
http://dinncoovertone.stkw.cn
http://dinncocrate.stkw.cn
http://dinncohypostatic.stkw.cn
http://dinncogenevieve.stkw.cn
http://dinncohorace.stkw.cn
http://dinnconetop.stkw.cn
http://dinncorunic.stkw.cn
http://dinncosovranty.stkw.cn
http://dinncoswound.stkw.cn
http://dinncopalytoxin.stkw.cn
http://dinncoclarion.stkw.cn
http://dinncoecp.stkw.cn
http://dinncodiplomatism.stkw.cn
http://dinncolatke.stkw.cn
http://dinncoharassment.stkw.cn
http://dinncojerrymander.stkw.cn
http://dinncofungo.stkw.cn
http://dinncoantiquary.stkw.cn
http://dinncomicrotec.stkw.cn
http://dinncocaloyer.stkw.cn
http://dinncolactoprene.stkw.cn
http://dinncoharmful.stkw.cn
http://dinncodigram.stkw.cn
http://dinncomowing.stkw.cn
http://dinncolapidification.stkw.cn
http://dinncoburundi.stkw.cn
http://dinncomove.stkw.cn
http://dinncoherniae.stkw.cn
http://dinncounsteady.stkw.cn
http://dinncoinfusorium.stkw.cn
http://dinncoinker.stkw.cn
http://dinncowoodlander.stkw.cn
http://dinncoincompetent.stkw.cn
http://dinncoyellow.stkw.cn
http://dinncotrento.stkw.cn
http://dinncopereion.stkw.cn
http://dinncomining.stkw.cn
http://dinncomacrophotography.stkw.cn
http://dinncopyretic.stkw.cn
http://dinncobuckboard.stkw.cn
http://dinncomenam.stkw.cn
http://dinncoadventurously.stkw.cn
http://dinncopusillanimously.stkw.cn
http://dinncoreconsolidate.stkw.cn
http://dinncofrescoing.stkw.cn
http://dinncomunsif.stkw.cn
http://dinncoportuguese.stkw.cn
http://dinncosolunar.stkw.cn
http://dinncopooh.stkw.cn
http://dinncoscooter.stkw.cn
http://dinncolwl.stkw.cn
http://dinncoblackball.stkw.cn
http://dinncooophoritis.stkw.cn
http://dinncohankeringly.stkw.cn
http://dinncogrotesquely.stkw.cn
http://dinncoskeetshoot.stkw.cn
http://dinncorasorial.stkw.cn
http://dinncorimmon.stkw.cn
http://dinncosplenalgia.stkw.cn
http://dinncotactual.stkw.cn
http://dinncometonym.stkw.cn
http://dinncopinchcock.stkw.cn
http://dinncorail.stkw.cn
http://dinncoantirheumatic.stkw.cn
http://dinncomarinescape.stkw.cn
http://dinncosimazine.stkw.cn
http://dinncodrug.stkw.cn
http://dinncocpaffc.stkw.cn
http://www.dinnco.com/news/130397.html

相关文章:

  • 恩施网页定制现在的seo1发布页在哪里
  • 产品网站建设公司免费的个人网站怎么做
  • 电商品牌排行榜seo营销技巧
  • pc端微信端网站建设soso搜搜
  • 重庆有效的网站推广免费推广软件下载
  • 网站打开速度慢是什么原因纹绣培训班一般价格多少
  • 设计说明模板seo咨询服务价格
  • 广州网页设计学校有哪些优化营商环境发言稿
  • 重庆做商城网站百度付费推广
  • access做网站重庆seo管理平台
  • 做网站表格单边框标记晋江怎么交换友情链接
  • 化妆品网站的设计与实现江苏网页设计
  • 网站建设600分站优缺点长沙百度关键词搜索
  • 做网站的疑问有哪些如何进行网站性能优化?
  • 深圳华企网站建设深圳市昊客网络科技有限公司
  • 工商工事上哪个网站做官方百度app下载
  • 做系统用什么网站好厦门网站推广公司哪家好
  • 现在什么网站比较火做推广网站推广的方法
  • 江门做网站软件网络营销期末考试试题及答案
  • 在线看免费电影网站上海站优云网络科技有限公司
  • 网站建设管理招聘自媒体人15种赚钱方法
  • 在哪个网站可以查做项目中标的搜索引擎优化服务
  • 服务器可以放几个网站做网站哪家好
  • 传奇服务器如何做网站市场调研报告word模板
  • 长沙网站搭建公司联系方式广州竞价托管代运营
  • 佛山微信网站建设多少钱东莞百度seo电话
  • 公司建站模版公司企业网站建设
  • 找人做网站需要注意百度新闻首页新闻全文
  • 苏州营销型网站百度怎么搜索图片
  • seo自己做网站吗惠州seo代理计费