Redis 之 五大基本数据类型
五大基本类型
string(字符串)
string(字符串) | 二进制安全的,可包含任何数据,一个键最大能储存512MB |
举例:
redis 127.0.0.1:6379> SET name “runoob” #设置key
OK
redis 127.0.0.1:6379> GET name #获取key
“runoob”
append name ddd | key=name后面添加字符串 |
strlen name | 计算key=name长度 |
incr views | key=name加1 |
decr views | key=name减1 |
incrby views n | key=name加n |
decrby views n | key=name减n |
getrange name 0 7 | 获取key=name的范围 0 -1表示全部 |
setrange name 7 jjj | 字符替换,从index=7开始 |
setex key3 5 llll | 设置key3的过期时间 |
setnx name 111 | 不存在name创建,否则失败 |
mset k1 v1 k2 v2 k3 v3 | 批量设置,有一个错误就所有失败 |
mget k1 k2 k3 | 批量获取 |
getset name 4444 | 获取旧值设置新值 |
hash(哈希)
hash(哈希) | 是一个string类型的field和value的映射表,hash特别适合用于存储对象 |
每个 hash 可以存储(2^32)-1 键值对(40多亿)
举例:
127.0.0.1:6330[2]> hset myhash f1 aaa #设置键值
127.0.0.1:6330[2]> hget myhash f1 #获取键值
"aaa"
127.0.0.1:6330[2]> hmset myhash f1 aa f2 bb f3 cc #批量设置
OK
127.0.0.1:6330[2]> hmget myhash f1 f2 f3 #批量获取
1) "aa"
2) "bb"
3) "cc"
127.0.0.1:6330[2]> hgetall myhash #获取myhash中信息
1) "f1"
2) "aa"
3) "f2"
4) "bb"
5) "f3"
6) "cc"
127.0.0.1:6330[2]> hlen myhash #获取myhash中元素个数
(integer) 3
127.0.0.1:6330[2]> hincrby myhash f5 4 #将f5字段值加4,返回结果,可以为负数
(integer) 7
127.0.0.1:6330[2]> hsetnx myhash f4 ii #如果存在不设置
(integer) 1
应用:
1.用户信息保存
2.经常变动的信息
list(列表)
list(列表) | 是简单的字符串列表,按照插入顺序排序。你可以添加一个元素到列表的头部(左边)或者尾部(右边) |
容量和hash一样40多亿
举例:
redis 127.0.0.1:6379> lpush runoob redis #插入元素
(integer) 1
redis 127.0.0.1:6379> lpush runoob mongodb
(integer) 2
redis 127.0.0.1:6379> lpush runoob rabitmq
(integer) 3
redis 127.0.0.1:6379> lrange runoob 0 10 #查看key中一个区间的元素
1) “rabitmq”
2) “mongodb”
3) “redis”
rpush list four | 放入另一边,与lpush相反,即在lpush第一次插入元素之前插入一个元素 |
lpop list | 从lpush插入一端移除一个,即删除lpush最后插入的元素 |
rpop list | 从另一端移除一个,即删除lpush第一个插入的元素 |
LINDEX 1 | 获取index=1的元素,从lpush最后插入元素作为0开始。不会删除元素 |
LLEN list | 返回list长度 |
LREM list 1 one | 移除list中1个one |
ltrim list 1 2 | 截取列表中的元素ltrim key start stop,这里的索引和lindex一样 |
rpoplpush list mylist | 移除列表中元素到新列表 |
exists list | 判断列表是否存在 |
lset list 2 sss | 从lpush插入最后一个元素开始,设置index=2的值 |
linsert key BEFORE|AFTER pivot value | 在某个值前/后面插入值。before为插入元素lindex索引小,after为lindex索引大 |
应用范围:
消息队列,队列,栈
set(元素唯一无序集合)
set(集合) | 是string类型的无序集合。元素唯一,若存在,添加失败 |
集合通过哈希表实现的,复杂度为常数
插入元素到set集合中,成功返回1,如果元素已经在集合中返回0,key对应的set不存在返回错误
举例:
127.0.0.1:6379> sadd key a 2 3 4 5 6 #添加元素到key中
(integer) 6
127.0.0.1:6379> SMEMBERS key #查看key中的元素
1) "a"
2) "3"
3) "2"
4) "6"
5) "5"
6) "4"
127.0.0.1:6379> SISMEMBER key 4 #判断key中是否有4
(integer) 1
127.0.0.1:6379> SCARD key #计算key中元素个数
(integer) 6
127.0.0.1:6379> srem key a #删除key中元素a
(integer) 1
127.0.0.1:6379> SMEMBERS key
1) "6"
2) "5"
3) "2"
4) "3"
5) "4"
127.0.0.1:6379> SRANDMEMBER key 2 ##随机返回n个key中的元素,不删除
1) "5"
2) "3"
127.0.0.1:6379> SMEMBERS key
1) "6"
2) "5"
3) "2"
4) "3"
5) "4"
127.0.0.1:6379> spop key #随机删除一个元素
"4"
127.0.0.1:6379> smove key key2 3 #将key中的元素3移动到key2
(integer) 1
127.0.0.1:6379> SMEMBERS key
1) "6"
2) "5"
3) "2"
127.0.0.1:6379> SMEMBERS key2
1) "3"
集合操作
127.0.0.1:6330[2]> smembers set1
1) "1"
2) "2"
3) "3"
4) "4"
127.0.0.1:6330[2]> smembers set2
1) "3"
2) "4"
3) "5"
4) "6"
127.0.0.1:6330[2]> sdiff set1 set2 #差集
1) "1"
2) "2"
127.0.0.1:6330[2]> sinter set1 set2 #交集
1) "3"
2) "4"
127.0.0.1:6330[2]> sunion set1 set2 #并集
1) "1"
2) "2"
3) "3"
4) "4"
5) "5"
6) "6"
sunionstore set3 set1 set2 #计算set1和set2的并集并保存在set3中
sdiffstore
sinterstore
应用范围:
微博关注放到set中,计算共同关注
zset(唯一有序集合)
zset(有序集合) | 每个元素关联一个double类型的分数用来排序,成员唯一,分数可以重复 |
举例:
####添加元素
127.0.0.1:6330[9]> zadd myset 300 ccc
(integer) 1
127.0.0.1:6330[9]> zadd myset 100 fff
(integer) 1
127.0.0.1:6330[9]> zadd myset 700 aaa
(integer) 1
####
127.0.0.1:6330[9]> zrange myset 0 -1 #查看所有元素,从小到大
1) "fff"
2) "ccc"
3) "aaa"
127.0.0.1:6330[9]> zrangebyscore myset -inf inf #查看所有元素,从小到大
1) "fff"
2) "ccc"
3) "aaa"
127.0.0.1:6330[9]> zrevrange myset 0 -1 #查看所有元素,从大到小
1) "aaa"
2) "ccc"
3) "fff"
127.0.0.1:6330[9]> zrangebyscore myset -inf inf withscores ##查看所有元素,从小到大,并打印分数
1) "fff"
2) "100"
3) "ccc"
4) "300"
5) "aaa"
6) "700"
127.0.0.1:6330[9]> zrangebyscore myset -inf 600 withscores #查看某一区间元素,从小到大
1) "fff"
2) "100"
3) "ccc"
4) "300"
127.0.0.1:6330[9]> zrem myset aaa #删除元素
(integer) 1
127.0.0.1:6330[9]> zrange myset 0 -1
1) "fff"
2) "ccc"
127.0.0.1:6330[9]> zadd myset 700 aaa
(integer) 1
127.0.0.1:6330[9]> zcount myset 200 600 #计算某个区间元素个数
(integer) 1
127.0.0.1:6330[9]> zcard myset #返回所有元素个数
(integer) 3
应用:
1.班级成绩
2.工资
3.消息优先级
4.排行榜实现
以上命令也可以去官网查看示例:
还没有评论,来说两句吧...