网站seo怎么做知乎,织梦网站图标,阳江网上房地产官网,做网站网页版和手机版分类 编程技术
Redis 数据类型分为#xff1a;字符串类型、散列类型、列表类型、集合类型、有序集合类型。
Redis 这么火#xff0c;它运行有多块#xff1f;一台普通的笔记本电脑#xff0c;可以在1秒钟内完成十万次的读写操作。
原子操作#xff1a;最小的操作单位字符串类型、散列类型、列表类型、集合类型、有序集合类型。
Redis 这么火它运行有多块一台普通的笔记本电脑可以在1秒钟内完成十万次的读写操作。
原子操作最小的操作单位不能继续拆分。即最小的执行单位不会被其他命令插入。高并发下不存在竞态条件。
KEY 的命名一个良好的建议是 article:1:title 来存储 ID 为 1 的文章的标题。 一、前言
1、获取key的列表KEYS pattern 通配符有 *[] 和转义 \。2、key 是否存在 EXISTS key 存在返回 1不存在返回 0。3、建立 key 和删除 keySET key 和 DEL key。4、根据 key 获取该键所存储的 redis 数据类型TYPE key。返回是 string、list、hash、set、zset。下面会对这5种返回的 redis 数据类型逐一讲解。5、rename oldkey newkey对 key 重命名如果 newkey 存在则覆盖。6、renamenx oldkey newkey对 key 重命名如果 newkey 存在则不覆盖。7、randomkey随即返回一个 key8、move key db-index将 key 移动到指定的数据库中如果 key 不存在或者已经在该数据库中则返回 0。成功则返回 1。 二、Redis数据类型 Redis数据命令
1、Redis数据类型一字符串类型这个很好理解一个key存储一个字符串。如果你要存数据呢转换成Json或者其他的字符串序列化。
2、Redis数据命令一字符串类型
1赋值SET key value。如 set hello world2取值GET key。如 get hello。返回是 world3自增INCR key。就是 Mysql的AUTO_INCREMENT。每次执行 INCR key时该key的值都会1.若key不存在则先建立一个0然后1返回 1。如果值不是整数则报错。该操作是原子操作。4自减DECR key。将指定 key 的值减少 1。 如 DECR num就是 num-15自增 NINCRBY key increment 用来给指定 key 的值加 increment。如 INCRBY num 5 就是 num56自减 NDECRBY key increment 用来给指定 key 的值减 increment。如 DECRBY num 5 就是 num-57增加浮点数INCRBYFLOAT key increment。8向尾部追加APPEND key value。如set test:key 123、append test:key 456、get test:key 就是 1234569获取长度STRLEN key。10同时给多个 key 赋值MSET title 这是标题 description 这是描述 content 这是内容。11同时获取多个 key 的值MGET title description content12位操作之获取GETBIT key offset。如字符 a 在 redis 中的存储为 01100001ASCII为98那么 GETBIT key 2 就是 1GET key 0 就是 0。13位操作之设置SETBIT key offset value。如字符 a 在 redis 中的存储为 01100001ASCII为98那么 SETBIT key 6 0SETBIT key 5 1 那么 get key 得到的是 b。因为取出的二进制为 01100010。14位操作之统计BITCOUNT key [start] [end]BITCOUNT key 用来获取 key 的值中二进制是 1 的个数。而 BITCOUNT key start end 则是用来统计key的值中在第 start 和 end 之间的子字符串的二进制是 1 的个数好绕啊。15位操作之位运算BITOP operation resultKey key1 key2。operation 是位运算的操作有 ANDORXORNOT。resultKey 是把运算结构存储在这个 key 中key1 和 key2 是参与运算的 key参与运算的 key 可以指定多个。 3、Redis数据类型二散列类型
Redis 是以字典关联数组的形式存储的一个 key 对应一个 value。在字符串类型中value 只能是一个字符串。那么在散列类型也叫哈希类型中value 对应的也是一个字典关联数组。那么就可以理解Redis 的哈希类型/散列类型中key 对应的 value 是一个二维数组。但是字段的值只可以是字符串。也就是说只能是二维数组不能有更多的维度。 4、Redis 数据命令二散列类型
1赋值HSET key field value。如 hset user name lane。hset user age 232取值HGET key field。如 hget user name得到的是 lane。3同一个key多个字段赋值HMSET key field1 value1 field2 value2...4同一个KEY多个字段取值HMGET key field1 fields2...5获取KEY的所有字段和所有值HGETALL key。如 HGETALL user 得到的是 name lane age 23。每个返回都是独立的一行。6字段是否存在HEXISTS key field。存在返回 1不存在返回 07当字段不存在时赋值HSETNX key field value。如果 key 下面的字段 field 不存在则建立 field 字段且值为 value。如果 field 字段存在则不执行任何操作。它的效果等于 HEXISTS HSET。但是这个命令的优点是原子操作。再高的并发也不会怕怕。8自增 NHINCREBY key field increment。同字符串的自增类型不再阐述。9删除字段DEL key field1 field2... 删除指定KEY的一个或多个字段。10只获取字段名HKEYS key。与 HGETALL 类似但是只获取字段名不获取字段值。11只获取字段值HVALS key。与 HGETALL 类似但是只获取字段值不获取字段名。12获取字段数量HLEN key。 5、Redis 数据类型三列表类型
列表类型存储了一个有序的字符串列表。常用的操作是向两端插入新的元素。时间复杂度为 O1。结构为一个链表。记录头和尾的地址。看到这里Redis 数据类型的列表类型一个重大的作用呼之欲出那就是队列。新来的请求插入到尾部新处理过的从头部删除。另外比如微博的新鲜事。比如日志。列表类型就是一个下标从 0 开始的数组。由于是链表存储那么越靠近头和尾的元素操作越快越靠近中间则越慢。 6、Redis 数据命令三列表类型
1向头部插入LPUSH key value1 value2...。返回增加后的列表长度。2向尾部插入RPUSH key value1 value2...。返回增加后的列表长度。3从头部弹出LPOP key。返回被弹出的元素值。该操作先删除key列表的第一个元素再将它返回。4从尾部弹出RPOP key。返回被弹出的元素值。5列表元素个数LLEN key。key 不存在返回 0。6获取列表的子列表LRANGE start end。返回第 start 个到第 end 个元素的列表。包含 start 和 end。支持负数索引。-1 表示最后一个元素-2 表示倒数第二个元素。7删除列表中指定值LREM key count value。删除 key 这个列表中所有值为 value 的元素只删除 count。如果有 count1 个那么就保留最后一个。count 不存在或者为 0则删除所有的。如果 count 大于 0则删除从头到尾的 count 个如果 count 小于 0则删除从尾到头的 count 个。8获取指定索引值LINDEX key index。如LINDEX key 0就是列表的第一个元素。index可以是负数。9设置索引和值LSET key index value。这个操作只是修改指定 key 且指定 index 的值。如果 index 不存在则报错。10保留片段删除其它LTRIM key start end。保留 start 到 end 之间的所有元素含 start 和 end。其他全部删除。11向列表插入元素LINSERT key BEFORE/AFTER value1 value2。从列表头开始遍历发现值为 value1 时停止将 value2 插入根据 BEFORE 或者 AFTER 插入到 value1 的前面还是后面。12把一个列表的一个元素转到另一个列表RPOPLPUSH list1 list2。将列表 list1 的右边元素删除并把该与元素插入到列表 list2 的左边。原子操作。 7、Redis 数据类型四集合类型
集合类型是为了方便对多个集合进行操作和运算。集合中每个元素不同且没有顺序的概念每个元素都是且只能是一个字符串。常用操作是对集合插入、删除、判断等操作。时间复杂度尾 O(1)。可以进行交集、并集、差集运算。例如文章 1 的有 3 个标签是一个 Redis 数据类型集合类型存储。文章 2 有 3 个标签有一个 Redis 数据类型集合类型存储。文章是 1 是 mysql文章 2 是讲 redis。那么交集是不是就交出了一个数据库假设数据库这个tag在两篇文字都有。集合类型在 redis 中的存储是一个值为空的散列表。 8、Redis 数据命令四集合类型
1增加SADD key value。2删除SREM key value。3获取指定集合的所有元素SMEMBERS key。4判断某个元素是否存在SISMEMBER key value。5差集运算SDIFF key1 key2...。对多个集合进行差集运算。6交集运算SINNER key1 key2...。对多个集合进行交集运算。7并集运算SUNION key1 key2...。对多个集合进行并集运算。8获取集合中元素个数SCARD key。返回集合中元素的总个数。9对差集、交集、并集运算的结果存放在一个指定的 key 中SDIFFSTORE storekey key1 key2。对 key1 和 key2 求差集结果存放在 key 为 storekey 的集合中。SINNERSTORE 和 SUNIONSTORE 类似。10获取集合中的随即元素SRANDMEMBER key [count]。参数 count 可选如果 count 不存在则随即一个。count 大于 0则是不重复的 count 个元素。count 小于 0则是一共 |count|个 元素可以重复。11随即弹出一个元素SPOP key。随即从集合中弹出一个元素并删除将该元素的值返回。 9、Redis 数据类型五有序集合类型
集合类型是无序的每个元素是唯一的。那么有序集合就是有序的每个元素是唯一的。有序集合类型和集合类型的差别是有序集合为每个元素配备了一个属性分数。有序集合就是根据分数来排序的。有序集合是使用散列表和跳跃表实现的。所以和列表相比操作中间元素的速度也很快。时间复杂度尾 O(log(N))。Redis 数据类型中的有序集合类型比 Redis 数据类型中的列表类型更加耗费资源。 10、Redis数据命令五有序集合类型
1增加ZADD key sorce1 value1 sorce2 value2...。2获取分数ZSCORE key value。获取key的有序集合中值为 value 的元素的分数。3获取排名在某个范围内的元素列表ZRANFGE key start stop [WITHSCORE]。获取排名在 start 和 end 之间的元素列表包含 start 和 end2 个元素。每个元素一行。如果有WITHSCORE参数则一行元素值一行分数。时间复杂度为O(LOGnm)。如果分数相同则 004获取指定分数范围的元素ZRANGEBYSCORE key min max [WITHSCORE] [LIMIT offset count]。获取分数在 min 和 max 之间的元素列表。含两头。每个元素一行。如果有 WITHSCORE 参数则一行元素值一行分数。如果 min 大于 max 则顺序反转。5为某个元素增加分数ZINCRBY key increment value。指定的有序集合的值为 value 的元素的分数 increment。返回值后更改后的分数。6获取集合中元素的数量ZCARD key。7获取指定分数范围内的元素个数ZCOUNT key min max。8删除一个或多个元素ZREM key value1 value2...9根据排名范围删除元素ZREMRANGEBYRANK key start end。删除排名在 start 和 end 中的元素。10按照分数范围删除元素ZREMRANGEBYSCORE key min max。11获得元素排名正序ZRANK key value。获取 value 在该集合中的从小到大的排名。12获得元素排名倒序ZREVRANK key value。获取 value 在该集合中从大到小的排名。13有序集合的交集ZINTERSTORE storekey key1 key2...[WEIGHTS weight [weight..]] [AGGREGATE SUM|MIN|MAX]。用来计算多个集合的交集结果存储在 storekey中。返回值是 storekey 的元素个数。AGGREGATE 为 SUM 则 storekey 集合的每个元素的分数是参与计算的集合分数和。MIN 是参与计算的分数最小值。MAX 是参与计算分数最大值。WEIGHTS 设置每个集合的权重如 WEIGHTS 1 0.1。那么集合A的每个元素分数 * 1集合B的每个元素分数 * 0.114有序集合的并集ZUNIONSTORE storekey key1 kye2...[WEIGHTS weight [weight..]] [AGGREGATE SUM|MIN|MAX]