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.排行榜实现

以上命令也可以去官网查看示例


 

发布了193 篇原创文章 · 获赞 13 · 访问量 4万+

猜你喜欢

转载自blog.csdn.net/u013919153/article/details/105599788
今日推荐