文章目录
五种数据类型
1 字符串
1.1 获取并设置值
getset name zhangsan
1.2 incr 增加一
假如没有定义 则默认0
假如非数值类型 则报错
127.0.0.1:6379> incr n
(integer) 1
127.0.0.1:6379> get n
“1”
127.0.0.1:6379> set nn 2
OK
127.0.0.1:6379> incr nn
(integer) 3
127.0.0.1:6379> get nn
“3”
1.3 减一 decr
假如没有定义 则默认0
127.0.0.1:6379> decr nn
(integer) 2
127.0.0.1:6379> decr n3
(integer) -1
1.4 incrby 指定增量值
127.0.0.1:6379> incrby n3 8
(integer) 7
从-1 增加8得到7
1.5 decrby 指定减量值
127.0.0.1:6379> decrby n3 5
(integer) 2
1.6 append 追加字符串
假如没定义 直接赋值
127.0.0.1:6379> append s1 jj
(integer) 2
127.0.0.1:6379> get s1
“jj”
127.0.0.1:6379> append s1 bb
(integer) 4
127.0.0.1:6379> get s1
“jjbb”
2 哈希
存储Hash
String key和String Value的Map容器
每一个Hash可以存储4294967295个键值对
2.1 设置值
hset h1 username zhangsan
hset h1 password 11111
获取值 hget h1 username
2.2 hmset 多个字段一起设置
127.0.0.1:6379> hmset h2 username open1111 password 23456
获取单个 hget h2 password
2.3 获取全部 hgetall h2
删除一个或多个 hdel h2 username password
2.4 hincrby增加数字
127.0.0.1:6379> hset h1 age 20
(integer) 1
127.0.0.1:6379> hincrby h1 age 5
(integer) 25
2.5 hexists判断字段是否存在 1表示存在 0表示不存在
127.0.0.1:6379> hexists h1 age
(integer) 1
127.0.0.1:6379> hexists h1 age2
(integer) 0
2.6 hlen获取hash属性个数
127.0.0.1:6379> hlen h1
(integer) 3
127.0.0.1:6379> hlen h2
(integer) 0
2.7 hkeys获取所有属性名称
127.0.0.1:6379> hkeys h1
-
“username”
-
“password”
-
“age”
127.0.0.1:6379> hkeys h2
(empty list or set)
2.8 hvals获取所有属性值
127.0.0.1:6379> hvals h1
-
“java1234”
-
“123456”
-
“25”
3 存储list
ArrayList使用数组方式
LinkedList使用双向链接方式
双向链接表中增加数据
双向链接表中删除数据
3.1 lpush 方式添加
从左边开始添加
127.0.0.1:6379> lpush l1 a b c d
(integer) 4
127.0.0.1:6379> lpush l1 1 2 3 4
(integer) 8
lrange 获取指定方位的集合元素
从第1个开始 到倒数第一个 也就是最后一个 也就是 所有数据
127.0.0.1:6379> lrange l1 0 -1
-
“4”
-
“3”
-
“2”
-
“1”
-
“d”
-
“c”
-
“b”
-
“a”
获取从第1个到第6个集合元素
127.0.0.1:6379> lrange l1 0 6
-
“4”
-
“3”
-
“2”
-
“1”
-
“d”
-
“c”
-
“b”
3.2 rpush 从右端开始添加
127.0.0.1:6379> rpush l2 a b c d
(integer) 4
127.0.0.1:6379> rpush l2 1 2 3 4
(integer) 8
127.0.0.1:6379> lrange l2 0 -1
-
“a”
-
“b”
-
“c”
-
“d”
-
“1”
-
“2”
-
“3”
-
“4”
127.0.0.1:6379> lrange l2 0 6
-
“a”
-
“b”
-
“c”
-
“d”
-
“1”
-
“2”
-
“3”
lpop 左侧弹出集合元素
3.3rpop 右侧弹出集合元素 删除右侧1个元素后所得到的集合
127.0.0.1:6379> lrange l2 0 -1
-
“b”
-
“c”
-
“d”
-
“1”
-
“2”
-
“3”
-
“4”
127.0.0.1:6379> rpop l2
“4”
127.0.0.1:6379> lrange l2 0 -1
-
“b”
-
“c”
-
“d”
-
“1”
-
“2”
-
“3”
3.4 llen查看元素个数
127.0.0.1:6379> llen l2
(integer) 6
3.5 lpushx 集合头部插入元素
127.0.0.1:6379> lpushx l2 xx
(integer) 7
127.0.0.1:6379> lrange l2 0 -1
-
“xx”
-
“b”
-
“c”
-
“d”
-
“1”
-
“2”
-
“3”
3.6 rpushx 集合尾部插入元素
127.0.0.1:6379> rpushx l2 yy
(integer) 8
127.0.0.1:6379> lrange l2 0 -1
-
“xx”
-
“b”
-
“c”
-
“d”
-
“1”
-
“2”
-
“3”
-
“yy”
3.7 lpush集合头部插入多个元素
127.0.0.1:6379> lpush l2 a1 a2
(integer) 10
127.0.0.1:6379> lrange l2 0 -1
-
“a2”
-
“a1”
-
“xx”
-
“b”
-
“c”
-
“d”
-
“1”
-
“2”
-
“3”
-
“yy”
127.0.0.1:6379> rpush l2 a3 a4
(integer) 12
127.0.0.1:6379> lrange l2 0 -1
-
“a2”
-
“a1”
-
“xx”
-
“b”
-
“c”
-
“d”
-
“1”
-
“2”
-
“3”
-
“yy”
-
“a3”
-
“a4”
3.8 lrem 从指定方向删除指定个数的指定元素
先加点数据搞个新集合l3
127.0.0.1:6379> lpush l3 1 3 2 3 2 1 2 1 3
(integer) 9
127.0.0.1:6379> lrange l3 0 -1
-
“3”
-
“1”
-
“2”
-
“1”
-
“2”
-
“3”
-
“2”
-
“3”
-
“1”
从左边开始删除2个1
127.0.0.1:6379> lrem l3 2 1
(integer) 2
127.0.0.1:6379> lrange l3 0 -1
-
“3”
-
“2”
-
“2”
-
“3”
-
“2”
-
“3”
-
“1”
从右边开始删除2个3
127.0.0.1:6379> lrem l3 -2 3
(integer) 2
127.0.0.1:6379> lrange l3 0 -1
-
“3”
-
“2”
-
“2”
-
“2”
-
“1”
删除所有2
127.0.0.1:6379> lrem l3 0 2
(integer) 3
127.0.0.1:6379> lrange l3 0 -1
-
“3”
-
“1”
3.9 lset 设置集合指定索引的值
127.0.0.1:6379> lrange l1 0 -1
-
“4”
-
“3”
-
“2”
-
“1”
-
“d”
-
“c”
-
“b”
-
“a”
索引从0开始
127.0.0.1:6379> lset l1 3 xxxx
OK
127.0.0.1:6379> lrange l1 0 -1
-
“4”
-
“3”
-
“2”
-
“xxxx”
-
“d”
-
“c”
-
“b”
-
“a”
3.10 linsert 在集合里插入指定元素
在xxxx元素之前插入aa
127.0.0.1:6379> linsert l1 before xxxx aa
(integer) 9
127.0.0.1:6379> lrange l1 0 -1
-
“4”
-
“3”
-
“2”
-
“aa”
-
“xxxx”
-
“d”
-
“c”
-
“b”
-
“a”
在xxxx元素之后插入bb
127.0.0.1:6379> linsert l1 after xxxx bb
(integer) 10
127.0.0.1:6379> lrange l1 0 -1
-
“4”
-
“3”
-
“2”
-
“aa”
-
“xxxx”
-
“bb”
-
“d”
-
“c”
-
“b”
-
“a”
3.11 rpoplpush 把A集合尾部元素弹出并插入到B集合头部
127.0.0.1:6379> rpush l4 a b c
(integer) 3
127.0.0.1:6379> rpush l5 1 2 3
(integer) 3
127.0.0.1:6379> lrange l4 0 -1
-
“a”
-
“b”
-
“c”
127.0.0.1:6379> lrange l5 0 -1
-
“1”
-
“2”
-
“3”
127.0.0.1:6379> rpoplpush l4 l5
“c”
127.0.0.1:6379> lrange l4 0 -1
-
“a”
-
“b”
127.0.0.1:6379> lrange l5 0 -1
-
“c”
-
“1”
-
“2”
-
“3”
4 set
4.1 添加set元素和获取set元素
继续添加元素 若重复元素不再添加
4.2 删除元素
删除两个元素
4.3 判断某个元素是否存在 返回1 表示存在 返回0表示不存在
4.4 sdiff计算差集
可以看出 集合的顺序不同 结果不一样
4.5 sinter计算交集
4.6 sunion计算并集
4.6 scard计算元素总数
4.7 srandmember 随机取一个元素
4.8 sdiffstore 把差集结果存储到新集合中
4.9 sinterstore 把交集结果存储到新集合中
4.10 sunionstore把并集结果存储到新集合中
5 存储Sorted-Set
5.1 添加元素默认从小到大排
zrange是查找元素 -1代表是最后一个
继续添加元素,这里分两种情况
假如次元素集合里面已经有了,则覆盖
127.0.0.1:6379> zadd sort1 7 b
(integer) 0
通过zscore 获取
127.0.0.1:6379> zscore sort1 b
“7”
发现已经修改了;
127.0.0.1:6379> zrange sort1 0 -1
-
“a”
-
“c”
-
“b”
假如添加的元素不在集合里,则添加进去
127.0.0.1:6379> zadd sort1 9 d
(integer) 1
127.0.0.1:6379> zrange sort1 0 -1
- “a”
- “c”
- “b”
- “d”
5.3 删除元素zrem
127.0.0.1:6379> zrem sort1 b
(integer) 1
127.0.0.1:6379> zrange sort1 0 -1
-
“a”
-
“c”
-
“d”
5.4 zcard 查看集合里的元素个数
127.0.0.1:6379> zcard sort1
(integer) 3
withscores 把序号也显示出来
127.0.0.1:6379> zrange sort1 0 -1 withscores
-
“a”
-
“5”
-
“c”
-
“6”
-
“d”
-
“9”
5.5 zrevrange 降序排列
127.0.0.1:6379> zrevrange sort1 0 -1 withscores
-
“d”
-
“9”
-
“c”
-
“6”
-
“a”
-
“5”
我们再加两个元素
127.0.0.1:6379> zadd sort1 10 e 5 f
(integer) 2
5.6 remrangebyrank 根据排名来删除元素 删除3个
127.0.0.1:6379> zremrangebyrank sort1 0 2
(integer) 3
127.0.0.1:6379> zrange sort1 0 -1 withscores
-
“d”
-
“9”
-
“e”
-
“10”
再添加元素
127.0.0.1:6379> zadd sort1 11 f 16 g 18 h
(integer) 3
127.0.0.1:6379> zrange sort1 0 -1 withscores
-
“d”
-
“9”
-
“e”
-
“10”
-
“f”
-
“11”
-
“g”
-
“16”
-
“h”
-
“18”
5.7 zremrangebyscore 根据具体序号范围来删除元素
127.0.0.1:6379> zremrangebyscore sort1 10 16
(integer) 3
127.0.0.1:6379> zrange sort1 0 -1 withscores
-
“d”
-
“9”
-
“h”
-
“18”
再添加元素
127.0.0.1:6379> zadd sort1 20 i 23 j 30 k
(integer) 3
127.0.0.1:6379> zrange sort1 0 -1 withscores
-
“d”
-
“9”
-
“h”
-
“18”
-
“i”
-
“20”
-
“j”
-
“23”
-
“k”
-
“30”
5.8 zrangebyscore 根据序号范围来查找元素
127.0.0.1:6379> zrangebyscore sort1 18 23 withscores
-
“h”
-
“18”
-
“i”
-
“20”
-
“j”
-
“23”
5.9 limit 限定查找起始 类似分页
127.0.0.1:6379> zrangebyscore sort1 18 23 withscores limit 0 2
-
“h”
-
“18”
-
“i”
-
“20”
5.10 zincrby 给指定元素加分
127.0.0.1:6379> zincrby sort1 5 h
“23”
127.0.0.1:6379> zrange sort1 0 -1 withscores
-
“d”
-
“9”
-
“i”
-
“20”
-
“h”
-
“23”
-
“j”
-
“23”
-
“k”
-
“30”
zincrby 给指定元素序号
127.0.0.1:6379> zincrby sort1 5 h
“23”
127.0.0.1:6379> zrange sort1 0 -1 withscores
-
“d”
-
“9”
-
“i”
-
“20”
-
“h”
-
“23”
-
“j”
-
“23”
-
“k”
-
“30”
5.11 zcount 查找指定序号范围的元素个数
127.0.0.1:6379> zcount sort1 20 23
(integer) 3
Sorted-Set使用场景:
大型在线游戏积分排行榜
构建索引数据