前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >第十四章《redis》

第十四章《redis》

作者头像
全栈程序员站长
发布2022-06-29 15:50:19
1900
发布2022-06-29 15:50:19
举报
文章被收录于专栏:全栈程序员必看

redis(Remote dictionary server):是一个基于键值对(key-value)的NoSQL是一个开源软件 redis的数据是存储在内存当中,可用于好俗缓存,消息队列。redis主要的数据类型有5种; 字符串(string)、哈希(hash)、列表(list)、集合(set)、有序集合(zset);

redis的优点 1.速度快 读的速度大约110000/s,写的速度大约85000/s; 2.数据类型多样,可以实现的功能多 3.简单稳定,代码量少,单线程进行工作 4.支持的语言多,perl,python,java,lua等等; 5.持久化 6.主从复制 7.高可用和分布式

缺点:由于数据存储在内存当中,大规模的数据存放在redis中,内存成本太高

set key value [EX seconds] [PX milliseconds] [NX|XX] EX:设置键值对是添加键过期,单位是秒 PX:设置键值对是添加键过期,单位是微秒

NX:表示这个键是新的,是之前不存在的(用于创建键值对) XX:表示这个键是存在的(用于修改键值对的值)

redis全局命令: keys * 查询所有的键 dbsize 统计键的数量总和 exists key 查看这个key是否存在 del key 删除键值对

redis的数据结构类型: 1.字符串 2.hash 3.列表(list) 4.集合(set) 5.有序集合(zset)

键过期:已经存在的键值对设置过期时间:expire key 数字 (单位是秒),当超过过期时间,这个键自动删除; ttl key:查看这个键的过期时间,如果返回的数字大于0表示还有数字秒过期,返回数字为1表示没有给这个键设置过期时间,返回2,表示这个键不存在或已过期

5种数据结构类型; 在redis中,所有的key都是字符串类型的数据 1.字符串(string):指的是值的数据类型是字符串,包含简单的字符串和复杂的字符串,以及数字、图片、声音、视频等这些二进制; 特点:一个key对应一个value。 单个值大小不超过512M; 命令格式: 1.设置字符串:set key value [ex seconds] [px milliseconds] [nx|xx] 2.获取值: get key 3.查询键是否存在:exists key 4.批量设置键值对:mset key value key value… 5.批量获取值:mget key1 key2… 6.计数: (1)incr key :对整数数字有效,给key的值增加1,如果这个键不存在,这个命令会设置这个键并且默认值是从0开始增加1; (2)decr key :自减1,其余和上面保持一致; (3)incrby key 数字:给key加上数字; (4)decrby key 数字:给key减去数字; (5)incrbyfloat 小数 :给key加上小数

7.append key value:给key的值垢面再加上一个字符串; 8.strlen key:显示key对应的value字符串长度 9.getset key newvalue:更新key的值并返回原值; 10.setrange key offset str:更新value某一个位置上的字符串;(如果我们要设置的offset已经超出value的长度,它仍然会把新的字符串添加到下标指定的位置。从value最后一位到指定下标位置全部用“\x00”来填充); 11.getrange key start end:获取部分value;

字符串的内部编码:redis 根据key对应的value的长短、类型来判断使用哪种内部编码 int: 8字节长度的整数; embstr: 小于等于39个字节的字符串; raw: 大于39个字节的字符串

object encoding key:查看key对应value的内部编码

哈希(hash): key-value=(filed1,value1 filed2,value2…) key对应的不是一个value,而是一组或几组(filed,value)

hash命令格式 设置键值:hset key field value 成功返回1,不成功返回0

获取filed值: hget key field

删除filed值 hdel key filed1 filed2 .。。

统计field的个数 hlen key

批量设置和获取filed value hmset key filed1 value1 filed2 value2.。。

获取所有filed hkeys key

获取所有filed的值 hvals key

获取所有的filed和value: hgetall key

filed的value如果是整数 hincrby key filed count 给filed添加一个数字,如果filed不存在,会创建filed hincrbyfloat key filed float 给filed添加一个小数;

计算value的字符串长度 hstrlen key filed

hash内部编码: ziplist:当hash类型元素(filed和value的和)个数不小于512个,单个value的长度小于64字节; hashtable(哈希表):不满足ziplist的条件 object encoding key 查看内部编码; 列表list:key-(一组有序排列的元素)a b c d e这一组元素他是有序排列的,所以可以通过下标来获取对应的元素,元素最多不超过2^32-1个;

列表类型 的2个特点:1.元素的有序性 2.元素可重复

列表的命令: 添加元素: lpush key value1 value2 … 从列表的左边添加元素; rpush key value1 value2 …从列表的右边添加元素 linsert key before | after pivot value 在原有的某个元素前边/后边添加一个新的元素

查看列表里的元素: lrange key start end

lindex key index 获取下标为index的元素 获取列表元素的个数: llen key 删除列表元素: lpop key 从列表左边删除一个元素 rpop key 从列表右边删除一个元素 lrem key count value 删除指定元素,count>0表示从列表的左端开始删除,count表示删除这个元素的个数;count<0表示从列表右端开始删除,count的相反数表示删除这个元素的个数,count=0表示删除列表内所有的这个元素,如果想要删除的元素不存在,则不删除。

修改: lset key index newvalue 修改列表index对应的值

阻塞操作: blpop key timeout 从左边删除,如果key里的元素被删光了就会阻塞timeout秒 brpop key timeout 从右边删除,如果key里的元素被删光了就会阻塞timeout秒

列表的内部编码: ziplist:元素个数不超过512,每个元素的长度不超过64字节 linkedist(链表):不满足ziplist条件就会用linkedist

集合(set):集合也是用来保存多个字符串元素的,他的元素不能重复,他的元素是无序的,不能通过下标查看元素,元素不超过512个,每个元素的长度不能超过64字节; 能够进行集合间的运算:交集、差集、并集 {0,1,2,3,4} {1,4,5,7,8} 交集:{1,4} 差集:{0,2,3,5,7,8} 并集:{0,1,2,3,4,5,7,8}

命令: 1、添加元素: sadd key member1 member2… 2.删除元素 srem key member1 member2… 3.统计元素 scard key 4.随机从集合中返回指定个数的元素: srandmember key [count] count 不写默认返回1个 5.随机删除集合中指定个数的元素: spop key [count] 6.查看集合内所有元素 smembers key

集合间的操作: 交集:sinter key1 key2… 差集:sdiff key1 key2… 并集:sunion key1 key2…

差集:key1的元素-key1和key2共同有的元素

myset3 [a b c d e f] myset4 [a b c d i h k] myset3-myset4 [e f] myset4-myset3 [i h k]

集合的内部编码 intest(整数集合):当集合中的元素都是整数且元素个数少于512,redis会使用intest来保存数据 hashtable:

有序集合(zset):和集合一样元素不重复,不同的是它通过给元素加上一个分数(score)来进行排序

命令: 1.添加成员: zadd key score member…

2.统计有序集合元素个数 zcard key

3.获取某个成员的分数 zscore key member

4.获取成员排名 zrank key member 分数由低到高来排 返回数字就是排名(从0开始) zrevrank key member 分数由高到低来排 5.删除成员 zrem key member1 member2.。。

6.增加元素的分数 zincrby key incr-score(增加的分数) member

7.查询指定排名范围的成员: zrange key start end [withscores] 由低到高 zrevrange key start end [withscores] 由高到低

8.查询指定分数范围的成员: zrangebyscore key minscore maxscore [withscores] [limit offset count] 由低到高 zrevrangebyscore key minscore maxscore [withscores] [limit offset count] 由高到低

-inf:无限小 +inf:无限大

9.查询指定分数范围的成员个数 zcount key min max

10.删除指定排名范围的成员: zremrangebyrank key start ent

11.删除指定分数范围的成员 zremrangebyscore key min max

集合间的操作: 交集:zinterstore destination key1 key2 [weights num1 num2] [aggregate sum|min|max]

numkeys:交集计算的有序集合的个数 weights:权重

并集:zunionstore destination numkeys key1 key2 [weight num1 num2] [aggregate sum|min|max]

内部编码: ziplist:元素个数2^32-1,单个元素长度不超过64M skiplist(跳跃表):

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

另开终端

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

多开redis

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/101964.html原文链接:https://javaforall.cn

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2021年5月2,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
云数据库 Redis
腾讯云数据库 Redis(TencentDB for Redis)是腾讯云打造的兼容 Redis 协议的缓存和存储服务。丰富的数据结构能帮助您完成不同类型的业务场景开发。支持主从热备,提供自动容灾切换、数据备份、故障迁移、实例监控、在线扩容、数据回档等全套的数据库服务。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档