redis批量存储集合_Redis入门看这个就够了

01 前言

    Redis是一个机遇内存的高性能K-V数据库,跟memcached很类似,按照Redis官网所提及每秒可以处理超过10万次读写操作,Redis出色的不仅仅是性能好,而且提供了多种数据结构,单个value最大限制10G(memcached只有1M);

    Redis当中有五大数据结构:string、list、set、hash、sorted set(稍后会演示);

02 Redis数据结构

String

(使用场景:微博数,粉丝数【常规计数】)

string 是 redis 最基本的数据类型。一个 key 对应一个 value(String不仅仅是字符串,还可以放数字)。

string 是二进制安全的。也就是说 redis 的 string 可以包含任何数据。比如 jpg 图片或者序列化的对象。

string 类型是 redis 最基本的数据类型,string 类型的值最大能存储 512 MB。

命令

解释

get

获取指定key值

set

设置指定key值

incr

将key中存储的数字增一

decr

将key中存储的数字减一

mget

获取一个或多个key的值

演示

c0df07d23b844f82cc0afd05aff3597d.png

List

(使用场景:微博关注列表,粉丝列表)

Redis 列表是简单的字符串列表,按照插入顺序排序。我们可以网列表的左边或者右边添加元素。

命令

解释

lpush

将一个或者多个值插入列表头部

rpush

将一个或者多个值插入列表尾部

lpop

移出并获取列表的第一个元素

rpop

移除列表的最后一个元素,返回值是移除的元素

lrange

获取列表的最后一个元素,返回值为移除的元素

演示ebec9371e02e9c441024f8fa5e7a5a9f.png

2d600a562ca21969b9ccc5be118d6c3b.png

Set

(使用场景:实现共同关注、共同喜好、二度好友)

Set就是一个集合,集合的概念就是一堆不重复值的组合。利用Redis提供的Set数据结构,可以存储一些集合性的数据;

redis的set 是字符串类型的无序集合。集合是通过哈希表实现的,因此添加、删除、查找的复杂度都是 O(1)

命令

解释

sadd

向集合中添加一个或多个成员

spop

移除并返回集合中的一个随机元素

smembers

返回集合中的所有成员

sunion

返回给定集合的并集

sdiff

返回第一个集合的差集
sinter返回第一个集合的交集

演示

eb9d8374db9e98b332afecc04c6875fe.png

5735db6ebea173ada0fec9b53e667f12.png

为了测试交集,请执行sadd names waibizi

873a340ecb0e1f1eec974048899afacd.png

sorted set

(使用场景:排行榜、按照用户投票和时间排序)

sorted set的使用场景与set类似,区别是set不是自动有序的,而sorted set是通过用户额外提供一个优先级(score)的参数来为成员排序

命令

解释

zadd

向有序集合添加一个或多个成员,或者更新已存在成员的分数

zrange

通过索引区间返回有序集合中指定区间内的成员

zrem

移除有序集合中的一个或多个成员

zcard

获取有序集合的成员数

演示

fad8f5e129b6b919e0a2e080f5e1b172.png

13479420213aeb4f5fa98ab8dbf17d0b.png

hash

(使用场景:存储部分变更数据,如用户数据)

hash是一个string类型的field和value的映射表

理解:可以将 hash 看成一个 key - value 的集合。也可以将其想成一个 hash 对应着多个 string。

与 string 区别:string 是 一个 key - value 键值对,而 hash 是多个 key - value 键值对。

命令

解释

hset

将哈希表key中的字段field的值设为value

hget

获取存储在哈希表中指定字段的值

hgetall

获取在哈希表中指定key的所有字段和值

演示

7ed923e3df869743717335e5cf6dd1f8.png

扩展

GEO

(使用场景:LBS应用开发)

GEO功能在Redis3.2版本提供,支持存储地理位置信息用来实现诸如附近位置、摇一摇这类依赖于地理位置信息的功能.geo的数据类型为zset.

命令

解释

geoadd

增加地理位置的坐标,可以批量添加地理位置

geopos

获取指定位置的坐标,可以批量获取多个地理位置的坐标

geodist

获取两个地理位置的距离

geohash

获取某个地理位置的geohash值

georadius

根据给定地理位置坐标获取指定范围内的地理位置集合(注意:该命令的中心点由输入得到经度和纬度决定)

演示

ce2efe8cd4f1ad0d0783eb17539d2079.png

b82c1683e01c1a029cdcce6fd02d7985.png

stream

(使用场景:消费者生产者场景【类似MQ】)

这个是在5.0版本之后才支持的,作者也是拿MQ去描述了这个stream

命令

解释

xadd

往指定的stream添加消息

xlen

stream中的消息数量

xdel

删除流中的消息

xrange

返回stream中满足给定ID范围的消息

xread

从一个或者多个stream的中读取数据

xinfo

检索关于流和关联的消费者组的不同信息

演示

46e46d0c819fd523e489fa73697b77b8.png

03 简单演示几个RedisTemplate

前排小知识

3e727959a38eec4c7de0dbdaa50dbb3c.png

String

daaa5d6cfdabfc7b4657e55ba6c3ec5f.png

ZSet

e2916f2d56525a03502ed828b1c55bb6.png

Hash

a78c8d3f22a6227ab47ef328125f6914.png

Geo

938e970d2ff82d3380cc1610af740609.png

04 Redis发布订阅

Redis 发布订阅 (pub/sub) 是一种消息通信模式:发送者 (pub) 发送消息,订阅者 (sub) 接收消息。

92da312d9a715e3b3ff14f33742c60a2.png

虽然Redis支持发布订阅功能,但是却不适合做发布订阅的工作,客户端需要一直在线才可以接收消息,类似发布订阅的工作还是交给专业的MQ中间件处理吧!

05 Redis事务

    redis 事务一次可以执行多条命令,服务器在执行命令期间,不会去执行其他客户端的命令请求。

    事务中的多条命令被一次性发送给服务器,而不是一条一条地发送,这种方式被称为流水线,它可以减少客户端与服务器之间的网络通信次数从而提升性能。

    Redis 事务的执行并不是原子性的。

    Redis的事务可以理解为一个打包的批量执行脚本,但批量指令并非原子化的操作,中间某条指令的失败不会导致前面已做指令的回滚,也不会造成后续的指令不做。

    baf71b683f55e8da427b29c6db09d0de.png

06 redis核心配置中文解释

72f64b77c6dc6c3ab726668b404a07bc.png

c41d9954cd092a5af59ecd9b7994d163.png

dbfee37697eb6e3e2f2817f0ad646de9.png

48253b28751f0f7866d21393d9565875.png

e6afd9c5fa90f24a3ec70adabac889e0.png

7f7e7a38ce5744fbb17b0358c2ffb4c0.png

a28e3870e325205091cf2b35c4d896c5.png

28de468117fa39f87ccb3bccbe231c60.png

e2939fab6748fe0e4df77a38bd1d9912.png

654d3a5147e4f68d832b80489fb6f7c0.png

6cb508a0fdee0c0f20956e3a72fc3a5a.png

891fe8442d002aa86c31e67f864ae575.png

d8a9bee5ae4932b9196c0a8e6dc0237f.png

6cdb7525a4dcd574c71f0a139a32cd80.png

66baa920a1b0cebdbe42e2576e55bb61.png

bb21ae3376c8a6ec044b8445d4ce2b68.png

a67f9e23daf9790828728bb201c7072b.png

e31b3955e0abb9cbfbfd529ad8a2a20f.png48cc4715829f2e45c23f9f1b545c78f6.png

549b3f2d0ca2a219f346d3c5bb0a5c68.png

2956eb7426c64bc1a1683cc4f44f7836.png

366ee5b596ecb4d8743bbf17a6c5a0ab.png

2d9d11738f8519fb64eaadd4f5058261.png

a39e09cb34e0edf3c67f481e023d3f04.png

d8d9cd8024e6d8fa99c2c08246582fba.png

b75567f62d177f348c79fb758bed20ad.pnga7cf6ca65cd0f812d283bf58511d45f3.png

c4b276d397e1e795463667dd1d535bb0.png

5bc51426f82fced14f656c323eeb4782.png0f2c0982a36110eb738b28db92e3ea38.png

85979cffaf7a66acbf51ca8e288baebc.pngd08f1608e9742cb0ca7c5dc239a376e3.png

dd3a59018e6e80c5e3b586adfd950dd5.png

3a0f5601b918c04c6354aad60407af1e.png

bca3c921d3b74c2acacff9991d7aa757.png444236ba0f73912339cff696e795d5d0.pngaed35640b99f79caf9889692c590fff4.png

887a32b27a5fbc96ab8498df769448a0.png

0d8008b83568cdf9994cc60828e887f4.png

dccae318c648a922dbbc64ea2df7a39c.png

e6d25385e00b52c6b66af3625ddc14bc.png

803bc62b3d9c0b2ec5eea31e1cb404e3.png7ebdbbda1a132f50f2399198dfcf8f81.png

ddd10c341a01a9938cdee0cccd526ac2.png

614aab72800907278a0d190c96baa597.png

26c848571a5dc0f4df4abe503abd2c15.png

666dd2210372fbacc735cb89ea13feb7.png

ddb1cd85dd8344c362970dfd2a096c76.png

031c199f768e95aacc9a77deebbfe7ab.png53d86bc9805a82931eaa8d5a573fc91e.png

72e4ab179c7c622d04a8b7eee7e3fe6a.png

1b05775aa8c9a8647e4f0c77ca3e73ef.png

b1ae045d4dc6126d978b3860e55425d2.png

9d9226130adac6868462e5651855f553.png

956d7ba417a6fd076850f35f334e7196.png

62b63e0f93c0c753966c088df8e298e9.png

466edefe4939f95f936d51cab4a19db0.png


版权声明:本文为weixin_39940957原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。