Redis的五种数据类型

Redis支持五种数据类型:string(字符串),hash(哈希),list(列表),set(集合)及zset(sorted set:有 序集合),接下来我们一一介绍这五种数据类型

字符串(String):

1.string是Redis最基本的类型,你可以理解成与Memcached一模一样的类型,一个key对应一个value

2.string类型是二进制安全的。意思是Redis的string可以包含任何数据。比如jpg图片或者序列化的对象 

3.string类型是Redis最基本的数据类型,一个键最大能存储512MB

字符串的基本操作:  

   设置键的值  set k1 "hello world"
   查看键的值 get k1 
   删除键 del k1 
   查看所有的键 keys *
   向键中追加值 append k1 123

   对键的指定范围查询 getrange k1 0 2
   查看键的长度 strlen k1

 127.0.0.1:6379> set k1 "hello world"
OK
127.0.0.1:6379> get k1
"hello world"
127.0.0.1:6379> del k1
(integer) 1
127.0.0.1:6379> get k1
(nil)
127.0.0.1:6379> getrange k1 0 2
""
127.0.0.1:6379> set k1 "hello world"
OK
127.0.0.1:6379> getrange k1 0 2
"hel"
127.0.0.1:6379> 
127.0.0.1:6379> set k1 "hello world"
OK
127.0.0.1:6379> get k1
"hello world"
127.0.0.1:6379> del k1
(integer) 1
127.0.0.1:6379> keys *
(empty list or set)
127.0.0.1:6379> set k1 "hello world"
OK
127.0.0.1:6379> append k1 123
(integer) 14
127.0.0.1:6379> get k1
"hello world123"
127.0.0.1:6379> getrange k1 0 2
"hel"
127.0.0.1:6379> strlen k1
(integer) 14


   添加1(该键的值只能为数字) incr k
   减少1 decr k
   添加15 incrby k 15
   减少3 decrby k 3

127.0.0.1:6379> set k 10
OK
127.0.0.1:6379> incr k
(integer) 11
127.0.0.1:6379> get k
"11"
127.0.0.1:6379> decr k
(integer) 10
127.0.0.1:6379> get k
"10"
127.0.0.1:6379> incrby k 15
(integer) 25
127.0.0.1:6379> get k
"25"
127.0.0.1:6379> decrby k 3
(integer) 22 
127.0.0.1:6379> get k
"22"

集合(Set)

1.是String类型的无序集合。集合成员是唯一的,这就意味着集合中不能出现重复的数据,会自动去重

2.集合是通过哈希表实现的,所以添加,删除,查找的复杂度都是O(1)

3.集合中最大的成员数为2的(32 - 1)次方(4294967295,每个集合可存储40多亿个成员)

集合的基本操作:

sadd     添加
smembers   查询集合元素
sismember    查询集合中是否存在某元素          1存在  0不存在
scard    获取集合的长度
spop  删除集合的某个元素(随机) 
srem    删除集合的某个元素(指定) 
srandmember   随机查询集合中的某元素    最后一个参数的查询的个数

127.0.0.1:6379> sadd arr 1 2 3 4 5 6 7 8
(integer) 8
127.0.0.1:6379> smembers arr
1) "1"
2) "2"
3) "3"
4) "4"
5) "5"
6) "6"
7) "7"
8) "8"
127.0.0.1:6379> sismember arr 9
(integer) 0
127.0.0.1:6379> sismember arr 1
(integer) 1
127.0.0.1:6379> scard arr
(integer) 8
127.0.0.1:6379> spop arr
"4"
127.0.0.1:6379> srem arr 1
(integer) 1
127.0.0.1:6379> scard arr
(integer) 6
127.0.0.1:6379> srandmember arr 1
1) "2"

列表(List)

1.Redis列表是简单的字符串列表,按照插入顺序排序。你可以添加一个元素到列表的头部(左边)或者尾部(右边)

2.列表最多可存储 2的(32-1)次方个元素(4294967295,每个列表可存储40多亿)

列表的基本操作:

lpush   将一个或多个值插入到到列表左边
rpush   将一个或多个值插入到到列表右边
lrange  查询列表中的元素             0 -1 查询全部
lindex   根据索引查询值   从0开始          最右边是-1
lpop    删除左边第一个元素
rpop    删除右边第一个元素
llen    查询列表的长度

127.0.0.1:6379> lpush a 1 2 3 4
(integer) 4
127.0.0.1:6379> rpush a 1 2 3 4
(integer) 8
127.0.0.1:6379> lrange a 0 -1
1) "4"
2) "3"
3) "2"
4) "1"
5) "1"
6) "2"
7) "3"
8) "4"
127.0.0.1:6379> lindex a 1
"3"
127.0.0.1:6379> lindex a 5
"2"
127.0.0.1:6379> lpop a
"4"
127.0.0.1:6379> lrange  a 0 -1
1) "3"
2) "2"
3) "1"
4) "1"
5) "2"
6) "3"
7) "4"
127.0.0.1:6379> rpop a
"4"
127.0.0.1:6379> lrange  a 0 -1
1) "3"
2) "2"
3) "1"
4) "1"
5) "2"
6) "3"
127.0.0.1:6379> llen a
(integer) 6

哈希(Map)

1.Redis hash是一个键值对集合

2.Redis hash是一个string类型的field和value的映射表,hash特别适合用于存储对象

3.每个hash可以存储2的(32 - 1)次方个键值对(40多亿)

哈希的基本操作:

hset   添加哈希   
hget  查看指定key   
hmset    添加多个键值对
hmget    获取多个键值对
hgetall     查看哈希中的所有键值 
hdel    删除指定键  
hlen    长度    
hexists   是否存在某键    0不存在    1存在
hkeys  获取属性的所有key
hvals     获取属性的所有value

127.0.0.1:6379> hset stu id 1001 age 18
(integer) 2
127.0.0.1:6379> hget stu id
"1001"
127.0.0.1:6379> hmset stu name leq sex 0
OK
127.0.0.1:6379> hmget stu id age
1) "1001"
2) "18"
127.0.0.1:6379> hgetall stu
1) "id"
2) "1001"
3) "age"
4) "18"
5) "name"
6) "leq"
7) "sex"
8) "0"
127.0.0.1:6379> hlen stu
(integer) 4
127.0.0.1:6379> hexists stu id
(integer) 1
127.0.0.1:6379> hexists stu id1
(integer) 0
127.0.0.1:6379> hkeys stu
1) "id"
2) "age"
3) "name"
4) "sex"
127.0.0.1:6379> hvals stu
1) "1001"
2) "18"
3) "leq"
4) "0"
127.0.0.1:6379> hdel stu id
(integer) 1
127.0.0.1:6379> hgetall stu
1) "age"
2) "18"
3) "name"
4) "leq"
5) "sex"
6) "0"

有序集合(Ordered Sets)

1.元素不能重复

2.给每一个key分配了一个double类型的权重

3.根据这个数字来对元素进行排序

4.集合是通过哈希表实现的,所以添加、删除、查找的复杂度都是O(1)。 集合中最大的成员数为2的(32 - 1)次方 (4294967295,每个集合可存储40多亿个成员)

有序集合的基本操作:

zadd   添加有序集合    
zrange     查询有序集合  
 zrange myzset 0 -1 withscores    输出权重
zrangebyscore myzset 20  40     权重20-40
zrangebyscore myzset 20  (40    权重20-40     小于40
zrem myzset game5  删除指定元素
zcard myzset     计算集合中元素的数量
zcount myzset 20 30     计算有序集合指定分数区间的成员数量

127.0.0.1:6379> zadd myzset 10 game1 20 game2 30 game3 40 game4 50 game5
(integer) 5
127.0.0.1:6379> zrange myzset 0 -1
1) "game1"
2) "game2"
3) "game3"
4) "game4"
5) "game5"
127.0.0.1:6379>  zrange myzset 0 -1 withscores
 1) "game1"
 2) "10"
 3) "game2"
 4) "20"
 5) "game3"
 6) "30"
 7) "game4"
 8) "40"
 9) "game5"
10) "50"
127.0.0.1:6379> zrangebyscore myzset 20  40
1) "game2"
2) "game3"
3) "game4"
127.0.0.1:6379> zrangebyscore myzset 20  (40
1) "game2"
2) "game3"
127.0.0.1:6379> zrem myzset game5
(integer) 1
127.0.0.1:6379>  zrange myzset 0 -1 withscores
1) "game1"
2) "10"
3) "game2"
4) "20"
5) "game3"
6) "30"
7) "game4"
8) "40"
127.0.0.1:6379> zcard myzset
(integer) 4
127.0.0.1:6379> zcount myzset 20 30
(integer) 2

数据类型小总结
        string (字符串)    

                 一个key对应一个value,字符串类型
         hash (哈希)     

                一个对应一个value,value是一个Map结构的类型 (适合对象的保存)
        list(列表)   

                 一个key对应多个value,这个value里保存多个string类型的值,有序的并可以重复
        set (集合)  

                一个key对应多个value,这个value中中保存多个string类型的值,无序并不可重复
         zset(sorted set:有序集合)

                 一个key对应多个value每一个value分配了一个score分数,按照这个分数有序排序,小的在前大的在后。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值