大家好,欢迎来到IT知识分享网。
1、string类型
Strings类型及操作
String是最简单的类型, 一个 key对应一个Value, String类型是二进制安全的。Redis的 string可以包含任何数据, 比如jpg图片或者序列化的对象。
相关命令:
set
设置键值,
语法:set key value
> set name pengjihan
get
获取键的值
语法:get 键名
> get name
incr
执行自增操作, 每执行一次, 数据自动加1
语法:incr 键名
注意:要求键的值是整数类型, incr可以不给初使值
> set age 10
> incr age
(integer) 11
> incr age
(integer) 12
decr
执行自减操作, 每执行一次, 数据自动加1
语法:decr 键名
注意:要求键的值是整数类型, incr可以不给初使值
> set age 10
> decr age
(integer) 9
> decr age
(integer) 8
执行加法操作, 可以指定相加的值。
语法:incrby 键名 相加的值
> set age 10
> incrby age 5
(integer) 15
执行减法操作, 可以指定相减的值。
语法:incrby 键名 相减的值
> set age 10
> decrby age 5
(integer) 5
> decrby age 10
(integer) -5
2、hashes类型及操作
Redis hash是一个string类型的field和value的映射表。
它的添加、删除操作都是0(1)(平均)。
hash特别适合用于存储对象。相较于将对象的每个字段存成单个string类型。
将一个对象存储在hash类型中会占用更少的内存, 并且可以更方便的存取整个对象。
注意:哈希类型, 可以存储一行的数据, 可以存储一个关联数组
(1)hset
设置哈希里面的field和vlaue的值。
语法:
hset 哈希的名称(键名称) field value
> hset row1 id 1
> hset row1 name xiaobai
(2)hget
获取哈希里面的field的值
语法:hget 哈希的名称(键名称) 指定的field
> hget row1 id
> hget row1 name
(3)hmset
一次性设置多个field和value
语法:hmset 哈希的名称(键名称) field1 value1 field2 value2…
> hmset row2 id 2 name xiaohei age 12 salary 12000
(4)hmget
一次性获取多个field的value
语法:hmget 哈希的名称(键名称) field1 field2…
> hmget row2 id name age salary
> hget row2 salary
(5)hgetall
获取哈希中所有的field和value
语法:
hgetall 哈希的名称(键名称)
> hgetall row2
3、lists类型及操作
list是一个链表结构, 主要功能是push、pop、获取一个范围的所有值等等, 操作中key 理解为链表的名字。
redis的list类型其实就是一个每个子元素都是string 类型的双向链表。
我们可以通过push、pop操作从链表的头部或者尾部添加删除元素, 这样list即可以作为栈, 又可以作为队列。
链表类型可以模拟栈的操作。
(1)lpush
从链表的头部添加元素
语法: lpush 链表的名称(键的名称) 元素
> lpush list1 xiaobai
> lpush list1 xiaohei
> lpush list1 xiaohuang
(2)lrange
获取链表里面的元素
语法:
lrange 链表的名称 开始下标 结束下标
注意:如果开始下标是0, 结束下标是-1, 则是返回链表中所有的元素。
链表里面的元素是序号的(从0开始数), 类似于索引数组。
> lrange list1 0 -1
> lrange list1 0 1
(3)rpush
从链表的尾部添加元素
语法:rpush 链表的名称(键的名称) 元素
> rpush list2 one
> rpush list2 two
> rpush list2 three
(4)ltrim
保留指定范围的元素, 删除非指定范围的元素
语法:ltrim 链表的名称 开始下标 结束下标
> ltrim list2 0 1
> lrange list2 0 -1
(5)lpop
从链表的头部删除一个元素, 返回删除的元素
语法:lpop 链表的名称
> lpop list2
4、sets类型及操作
set是集合, 它是string类型的无序集合。set是通过hash table实现的、添加、删除和查找的复杂度都是0(1)。
对集合我们可以取并集、交集、差集。通过这些操作我们可以实现sns中的好友推荐和blog的tag功能。
集合的特点:(1)唯一性 (2)无序性
交集:求两个集合中都存在的元素
差集: 在集合1中出现, 在集合2中不存在的元素
并集: 两个集合合并后, 去掉重复的元素
(1)sadd
向集合中添加元素
语法:
sadd 集合名(键名) 元素名称
> sadd set1 limochou
> sadd set1 yangguo
> sadd set1 luxiaofeng
> sadd set1 xiongda
> smembers set1
> sadd set2 yangguo
> sadd set2 xionger
> sadd set2 guangtouqiang
(2)smembers
获取集合中的元素
语法:
smembers 集合名
> smembers set1
> smembers set2
(3)sdiff difference: 差集
获取集合中的差集(在集合1中存在, 不在集合2中存在的元素)
语法:sdiff 集合1 集合2
> sdiff set1 set2
(4)sinter intersect: 交集
获取交集(在两个集合中都存在的元素)
语法:sinter 集合1 集合2
> sinter set1 set2
(5)sunion union: 联盟
求并集(两个集合合并后, 去掉重复的元素)
> sunion set1 set2
(6)scard
获取集合中元素的个数
语法:scard 集合名称
> scard set1
> scard set2
(7)srem remove: 移除,去除
移除集合中的member元素。
语法: srem 集合名称 元素名称
> srem set2 xiaoer
5、zset(有序集合)
(1)zadd
增加一个或多个元素, 如果该元素已经存在, 更新它的socre值
虽然有序集合有序, 但它也是集合, 不能重复元素, 添加重复元素只会更新原有元素的score值, score(索引)从0开始。
语法:
zadd 有序集合的名称(key) 顺序 元素的内容
> zadd orderset 0 wangnana
> zadd orderset 1 pengjihan
> zadd ordreset 2 liujing
> zadd ordreset 10 xuchenkai
(2)查询
按权值升序获取有序集合中的内容,
语法:zrange 集合的名称 开始名次 结束名次
> zrange orderset 0 2
1) “wangnana”
2) “pengjihan”
3) “liujing”
> zrange orderset 0 -1
1) “wangnana”
2) “pengjihan”
3) “liujing”
4) “xuchenkai”
5) “pengxiaotang”
DEL key [key …]
移除给定的一个或多个key。
如果key不存在, 则忽略该命令。
> del name
(integer) 0
> del age sex stu
(integer) 3
注意: del方法可以删除以上所有数据类型
redis数据类型的应用场景:
String:缓存、限流、计数器、分布式锁、分布式Session
Hash: 存储用户信息、用户主页访问量、组合查询
List: 微博关注人时间轴列表、简单队列
Set: 赞、踩、标签、好友关系
Zset: 排行榜
免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://haidsoft.com/124132.html