Redis的数据结构
**
五种数据类型
**
- 字符串(String)
- 字符串列表(list)
- 有序字符串集合(sorted set)
- 哈希(hash)
- 字符串集合(set)
Key定义的注意点:
- 不要过长
- 不要过短
- 统一的命名规范
存储String
- 二进制安全的,存入和获取的数据相同
- Value最多可以容纳的数据长度是512M
存储String常用的命令
- 赋值 set key value eg:set company apple
- 删除 del key eg: del company
- 取值 get key eg: get apple
- 数值增减 增 incr key 减 decr key
- 扩展命令 incrby key value decrby key value append key value 追加字符串
- 先获取值,再赋值 getset apple baidu
存储Hash
- String Key 和String Value 的map容器
- 每一个Hash可以存储4294967295个键值对
存储Hash常用命令
- 赋值 hset myhash username jack
-
hmset myhash2 username rose age 22
- 删除 hdel myhash2 username age
-
del myhash2
- 取值 hget myhash username
hmget myhash username age
hgetall myhash - 增加数字 hincrby myhash age 5
-
hdecrby myhash age 5
- 自学命令 hexists myhash username (属性是否存在)
-
hlen myhash(查看属性数量)
-
hkeys myhash(查看所有的key) hvals myhash(查看多有的值)
存储list
- ArrayList使用数组方式
- LinkedList使用双向链接方式
- 双向链表中增加数据
- 双向链表中删除数据
存储list常用命令
-
两端添加
-
lpush mylist a b c d e (左端添加)
-
rpush mylist1 a b c (右端添加)
-
查看列表
-
lrange mylist 0 3
-
两端弹出
-
lpop mylist
-
rpop mylist
-
获取列表元素个数 llen mylist
-
扩展命令
-
lpushx mylist x(从在的元素头部插入)
-
rpushx mylist x(从在的元素尾部插入) lrem mylist3 2 3 (从头开始删除2个3) lrem mylist3 -2 3 (从后往前删除2个3) lrem mylist3 0 2 (删除所有2) lset mylist3 1 11(设置下标1处的值为11) linsert mylist3 before 11 ab(在"11"之前插入"ab") linsert mylist3 after 11 cd(在"11"之后插入"cd") rpoplpush mylist5 mylist6(将5尾部的数据弹出压入到6的头部)
存储Set
- 和list类型不同的是,Set集合中不允许出现重复的元素
- Set可包含的最大元素数量为4294967295
存储set常用命令
- 添加元素 sadd myset a b c
- 删除元素 srem myset 1 2
- 获得集合中的元素 smembers myset
-
sismember myset a
- 集合中的差集运算 sdiff myset1 myset2
- 集合中的交集运算 sinter myset1 myset2
- 集合中的并集运算 sunion myset1 myset2
- 扩展命令 scard myset (myset中的数量)
-
srandmember myset(随机返回myset中的元素)
-
sdiffstore my1 myset1 myset2(将myset1,myset2的差集放到my1中)
-
sinterstore my2 myset1 myset2(将myset1,myset2的交集放到my2中) sunionstore my3 myset1 myset2(将myset1,myset2的并集放到my3中)