- Redis数据类型:
![9ff50aa5c229db7dcda61c51cfb1dad3.png](https://i-blog.csdnimg.cn/blog_migrate/6dc44ae1412e1706c08640779b3af820.jpeg)
五大类型
- Redis五大数据类型—Key
- Keys *
- 查询当前库的所有键
- Exists
- 判断某个键是否存在
- Type
- 查看键的类型
- Del
- 删除某个键
- Expire
- 为键值设置过期时间,单位秒。
- Ttl
- 查看还有多少秒过期,-1表示永不过期,-2表示已过期
- Move
- 把键移动到另一个库下
- Dbsize
- 查看当前数据库的key的数量
- Flushdb
- 清空当前库
- Flushall
- 通杀全部库
- Redis五大数据类型—String
- String是Redis最基本的类型,可以理解为Memcached一模一样的类型,一个对应key一个对应value
- String类型是二进制安全的。意味着Redis的String可以包含任何数据。比如图片或者序列化的对象
- String类型是Redis最基本的数据类型,一个Redis中字符串value最多可以是512M
- Get
- 查询对应的键值
- Set
- 添加键值对
- Append
- 将给定的追加到原值的末尾
- Strlen
- 获得值得长度
- Setnx
- 只有在key不存在时设置key的值
- Incr
- 将key中存储的数字值增1
- 只能对数字值操作,如果为空,新增值为1
- Decr
- 将key中存储的数字值减1
- 只能对数字值操作,如果为空,新增值为-1
- Incyby/decrby
- 将key中储存的数字值增减。自定义步长。
- Getrange
- 获得值得范围,类似java中的substring
- Setranger
- 用复写所储存的字符串值,从开始
- Mset……
- 同时设置一个或多个key-value对
- Mget…….
- 同时获取一个或者多个value
- Msetnx…….
- 同时设置一个或多个key-value对,并且仅当所有给定key都不存在。
- Setex
- 设置兼职的同时,设置过期时间,单位秒。
- Get
- 以新换旧,设置了新值同时获得旧值。
- 原子性
![f8e9bad92da373d9301611ecda3a3522.png](https://i-blog.csdnimg.cn/blog_migrate/16f4650182f54ef44c8e76b0306bca35.jpeg)
- Redis五大数据类型—list
- 单键多值
- Redis列表是简单的字符串列表,按照插入的顺序排序,
- 可以添加一个元素到列表的头部(左边)或者尾部(右边)
- 它的底层实际是个双向链表,对两端的操作性能很高,通过索引下标操作中间的节点性能会较差
![568ca7a89e0d89c644eaccb35bbacece.png](https://i-blog.csdnimg.cn/blog_migrate/8913ffe936bd2b0d46d2244a9f6e687a.jpeg)
- Lpush/rpush
- 从左边/右边插入一个或者多个值,
- 这个命令相当于创建了一个list集合,例如:
- Rpush k1 yuyang ai caihuolian
- 上面的命令是,从list集合的右边依次插入三个value值“yuyang ai caihuolian”
- 实际存储到内存的数据结构是:
![1f8c7eef76aca57cbb029936d3d55cb1.png](https://i-blog.csdnimg.cn/blog_migrate/2443b40cf003fabcb2c85aa44b10acd8.jpeg)
- 反之,如果从左边插入:lpush k1 yuyang ai caihuolian
![415b320814968565106bbe818cf08b9a.png](https://i-blog.csdnimg.cn/blog_migrate/4339a32dd37044dbf0ca5ccc3ffe2666.jpeg)
- 总结:lpush和rpush是将value值一个个的从一面放入进list集合的,比如从右边方,先把yuyang放进右边的第一个位置,然后把ai放进右边第一个位置,但是右边第一个位置已经被yuyang占用了,只能先把yuyang往左边移动一个位置,空出右边第一个位置,然后放入ai,当放入caihuolian的时候,需要先把yuyang再往左边移动一个位置,然后ai也往左边移动一个位置,这样子,右边第一个位置就空出来,放入caihuolian。从左边开始放入道理一样。
- Lpop/rpop
- 从左边/右边吐出一个值。
- 此处需要注意,是吐出,不是查询,吐出的意思是当这个值被吐出以后,list集合中就没有这个值了。
- 值在键在,值光键亡
- 此处需要注意,当把list集合中的值都吐光了以后,这个list集合对应的key也会自动被回收
- Rpoplpush
- 从对应list集合的右边吐出一个值放入到对应list集合的左边
- 命令演示:
![e3d14392fbf50b1342d026253b7b735f.png](https://i-blog.csdnimg.cn/blog_migrate/f0805f073310fe022d749656732ed461.jpeg)
- 说明:将两组value分别从右边放入对应的k1和k2集合中
- 执行命令:rpoplpush ,将k1集合右边的值吐出来放入到k2集合的左边
- 为了验证操作是否成功,执行:lpop k2,将k2集合左边的值吐出查看,操作成功
- Lranger
- 按照索引下表查询元素(从左到右)
- 按照范围查找
- Lindex
- 按照索引下标查询元素(从左到右)
- 指定确定下标查找
- Llen
- 获得列表长度
- list中有多少个值
- Linsertbefore
- 在的后面插入插入值
![7e6c286ceb57f28f588334ca97cd2806.png](https://i-blog.csdnimg.cn/blog_migrate/ed11967b3e69a6e1a2ad564bec755b5c.jpeg)
- Lrem
- 从左边删除n个value(从左到右)
![731a81e18d03426d89a2d59bd780241f.png](https://i-blog.csdnimg.cn/blog_migrate/7c6a8340cb53d8c3f124ee066e5adb1b.jpeg)
- Redis五大数据类型—set
- Redis set对外提供的功能与list类似,是一个列表的集合,相较于list集合特殊之处在于,set是可以自动排重的,当需要存储一个不重复的数据时,使用set集合是一个非常好的选择,并且set集合提供了判断某个value是否在set集合内的重要接口,这个也是list集合不能提供的。
- Redis set是string类型的无序集合。它底层是一个value为null的hash表,所以添加、删除、查找的复杂度都是O(1)。
- Sadd…….
- 将一个或者多个member元素加入到集合key当中,已经存在于集合的member元素将被忽略。
- Smenbers
- 取出该集合的所有值
- Sismember
- 判断集合是否为含有该值,有返回1,没有返回0.
- 命令演示:
![024a40c5406c3a8a655d54a4f928cdb2.png](https://i-blog.csdnimg.cn/blog_migrate/d9d25962495c23230bc60aa61953cf2b.jpeg)
- Scard
- 返回该集合的个数
- Srem…
- 删除集合中的某个元素
- Spop
- 随机从该集合中吐出一个值
- Srandmember
- 随机从该集合中取出n个值
- 不会从集合中删除这个值,相当于查询返回
- 命令演示:
![eef784ead8642367dc4acbd751a3643d.png](https://i-blog.csdnimg.cn/blog_migrate/689a578ee5d502e0e0f668b0b77a62e4.jpeg)
- Smove
- 将key1集合里的值移动到key2集合中
- Sinter
- 返回两个集合的交集元素
- Sunion
- 返回两个集合的并集元素
- 将两个集合合并为一个新的set集合,并返回新set集合的元素
- Sdiff
- 返回两个集合的差集元素
- 实际上是:
- 如果key1集合和key2集合有重复的元素,返回去除重复元素后的key1集合元素,如果没有重复的元素,则返回key1集合元素
- 命令演示:
![b8e93ab803a5632a820c0e79b63104da.png](https://i-blog.csdnimg.cn/blog_migrate/5ece7c920e512b7fb740a69ffe4ee471.jpeg)
- Redis五大数据类型—zset
- Redis有序集合zset与普通set非常相似,是一个没有重复元素的字符串集合。 :有序集合的每个成员都关联一个评分(score),这个评分(score)被用来按照从最低分到最高分的方式排序集合中的成员。集合的成员是唯一的,但是评分是可以重复的。
- 因为元素是有序的,所以你也可以很快的根据评分(score)或者次序(position)来获取一个范围的元素。访问有序集合的中间元素也是非常快的,因此能够使用有序集合作为一个没有重复成员的智能列表。
- Zadd
- 将一个或多个member元素及其score值加入到有序集合key当中
- Zranger[withscores]
- 返回有序集合key中,下表在之间的元素
- 带withscores,可以让分数一起喝值返回到结果集。
- Zrangebyscore key min max[withscore][limit offset count]
- 返回有序集合key中,所有score值介于min和max之间的成员(包含边界),有序集合按score值递增(从小到大)次序排列。
- Zrevrangebyscore key max min[withscore][limit offset count]
- 同上,改为从大到小排列
- 命令演示:
![5bce4e0cbf37353201fb0616ecba8cb0.png](https://i-blog.csdnimg.cn/blog_migrate/4bc34a786c8a3e966068ed0ddd3d953f.jpeg)
- Zincrby
- 为元素的score加上增量
- Zrem
- 删除key集合下,指定的value值
- Zcount
- 统计该集合,分数区间内的元素个数
- Zcard
- 获取key集合元素的个数
- Zrank
- 返回改值在集合中的排名,从0开始
- 命令演示:
![959341fb6919216e2a3e520a39b206e2.png](https://i-blog.csdnimg.cn/blog_migrate/84d1bf8d7b102dbacc23ca44d119a7db.jpeg)
- Redis五大数据类型—hash
- Redis hash 是一个键值对集合
- Redis hash 是一个string类型的field和value的映射表,hash特别适合用于存储对象
- 类似JAVA里面的Map
![325a754f832ebecbead8ad640018ee11.png](https://i-blog.csdnimg.cn/blog_migrate/bedd42e35dcbc27e9dc2e771b965d556.jpeg)
- Hset
- 给集合中的键赋值
- Hget
- 从集合中取出value
- Hmset…..
- 批量设置hash的值
- 命令操作:
![6ddaa7b536e662c8db78f8c46eb455da.png](https://i-blog.csdnimg.cn/blog_migrate/7f4dedfa3eea8135cd70aa8311070b30.jpeg)
- Hexists
- 查看哈希表key中,给定域field是否存在
- 存在返回1,不存在返回0
- Hkeys
- 列出该hash集合的所有field
- 根据key查询所有field
- Hvals
- 列出该hash集合的所有value
- 根据key查询所有value
- Hincrby
- 为哈希表key中的域field的值加上增量increment
- 只能对integer类型的value值操作,在原值基础上增加increment
- Hsetnx
- 奖哈希表key中的域field的值设置为value,当且仅当域field不存在
- 相当于对象增加了属性
- 命令演示:
![9bc9849516cc5c12d1078dce084e8941.png](https://i-blog.csdnimg.cn/blog_migrate/ca98a448deb72cc8a860ba21b4462f81.jpeg)
写的错误的地方,一定要帮我留言指正喔,谢谢你