-
Redis(Remote Dictionary Server)远程词典服务器
-
开源的的内存数据库,C语言编写的,可基于内存也可持久化(异步保存到硬盘上),提供多种语言的API。以其高性能、丰富的数据类型以及简单的单线程模型等特点而广受欢迎。Redis提供了一个高性能的键值(key-value)存储系统,能够支持每秒数十万次的读写操作,因此特别适用于处理高并发请求和需要快速响应的场景,如缓存、会话管理、排行榜等。它支持多种数据结构,包括字符串、列表、哈希表、集合、有序集合等,为开发者提供了灵活的数据操作能力,可以适应各种不同的应用场景。
-
-
全局命令
-
SELECT number 选择所在库(number在db0~db15之间)
-
KEYS * 查看KEY
-
TYPE key 查看KEY数据类型
-
DEL key 删除KEY
-
FLUSHDB 清空当前库
-
FLUSHALL 清除所有库数据
-
-
五种数据结构
-
字符串String:字符串是最基本的 key-value 数据类型。
-
Map<String,String> 例如:key:车站的id value:车站的详情
-
set key value 设置一个key-value
-
get key 获取key的值
-
set key value nx # not exists key不存在时再进行设置(nx)
-
set key value ex seconds 设置过期时间(ex)
-
strlen key 获取长度
-
INCRBY key 步长
-
DECRBY key 步长
-
incrbyfloat key step 浮点数操作:自动先转为数字类型,然后再进行相加减,不能使用append
-
-
集合Set:集合是无序的字符串集合,通常用于执行集合操作。
-
map套set,set放的是不重复的value Map<String,Set<>>
-
例如:key:车站的id value:set 放一个站的id,对应的站详情
-
SADD key member1 member2 增加一个或者多个元素,自动去重
-
SMEMBERS key 查看集合中所有元素
-
SREM key member1 member2 删除一个或者多个元素,元素不存在自动忽略
-
SISMEMBER key member 元素是否存在
-
SRANDOMMEMBER key count 随机返回集合中指定个数的元素,默认为1个
-
SCARD key 返回存储在指定key对应的集合中的成员数量,如果key不存在就会返回0
-
SMOVE source destination member 把元素从source集合移动到destination集合 member不能存在返回0 destination不存在创建destination
-
SDIFF key1 key2 差集
-
SDIFFSTORE destination key1 key2 差集保存到destination
-
SINTER key1 key2 交集
-
SINTERSTORE key1 key2 交集保存到destination
-
SUNION key1 key2 并集
-
SUNION key1 key2 并集保存到destination
-
-
散列Hash哈希是键值对集合,适用于存储小型结构化数据。
-
优点:每创建一个键,它都会为这个键储存一些附加的管理信息(比如这个键的类型,这个键最后 一次被访问的时间等)键越多,redis数据库在储存附件管理信息方面耗费内存越多,花在管理数据库键上的CPU也会越多。
-
缺点:使用过期键功能:键过期功能只能对键进行过期操作,而不能对散列的字段进行过期操作 。
-
map套map map 可以放重复 map结构
-
Map<String,Map<String,value>>
-
设置单个字段 HSET key field value 或 HSETNX key field value
-
设置多个字段 HMSET key field value field value
-
返回字段个数 HLEN key
-
判断字段是否存在(不存在返回0)HEXISTS key field
-
返回字段值 HGET key field
-
返回多个字段值 HMGET key field filed
-
返回所有的键值对 HGETALL key
-
返回所有字段名 HKEYS key
-
返回所有值 HVALS key
-
删除指定字段 HDEL key field
-
在key对应filed上进行整数增量运算 HINCRBY key filed increment
-
在字段对应值上进行浮点数增量increment 运算 HINCRBYFLOAT key field increment
-
-
列表List map 套list List 可以放重复下标index
-
列表是简单的字符串列表,按照插入顺序排序。可以添加一个元素到列表的头部(左边)或者尾部(右边)。
-
列表头尾增删快,中间增删慢,增删元素是常态
-
Map<String,List<>>
-
增
-
从列表left头部压入元素 LPUSH key value1 value2
-
从列表right尾部压入元素 RPUSH key value1 value2
-
从列表src尾部弹出1个元素,压入到列表dst的头部 RPOPLPUSH src dst
-
在列表指定元素后/前插入元素 LINSERT key after|before value newvalue
-
查
-
查看列表中元素 LRANGE key start stop
-
查看列表中所有元素 LRANGE key 0 -1
-
获取列表长度 LLEN key
-
删
-
从列表头部弹出1个元素 LPOP key
-
从列表尾部弹出1个元素 RPOP key
-
列表头部,阻塞弹出,列表为空时阻塞 BLPOP key timeout
-
列表尾部,阻塞弹出,列表为空时阻塞 BRPOP key timeout
-
关于BLPOP 和 BRPOP
-
1、如果弹出的列表不存在或者为空,就会阻塞
-
2、超时时间设置为0,就是永久阻塞,直到有数据可以弹出
-
3、如果多个客户端阻塞再同一个列表上,使用First In First Service原则,先到先服务
-
删除指定元素 LREM key count value
-
count>0:表示从头部开始向表尾搜索,移除与value相等的元素,数量为count
-
count<0:表示从尾部开始向表头搜索,移除与value相等的元素,数量为count
-
count=0:移除表中所有与value相等的值
-
保留指定范围内的元素 LTRIM key start stop
-
LRTIM mylist1 0 2 # 只保留前3条
-
应用场景: 保存微博评论最后500条
-
LTRIM weibo:comments 0 499
-
改
-
LSET key index newvalue
-
-
有序集合Zset:有序集合是一种可排序的集合,通过分数来进行排序。
-
map 套set set 放的是不重复的value并且可以排序
-
每个元素都关联着一个浮点数分值(score),并按照分支从小到大的顺序排列集合中的元素(分值可以相同)
-
Map<String,TreeSet<>>
-
在有序集合中添加一个成员 ZADD key score member
-
查看指定区间元素(升序) ZRANGE key start stop [withscores]
-
查看指定区间元素(降序) ZREVRANGE key start stop [withscores]
-
删除成员 zrem key member
-
增加或者减少分值 zincrby key increment member
-
返回元素排名 zrank key member
-
返回元素逆序排名 zrevrank key member
-
返回集合中元素个数 zcard key
-
并集 ZUNIONSTORE destination numkeys key [key ...] [WEIGHTS weight1 [weight2 ...]] [AGGREGATE SUM|MIN|MAX]
-
交集 和并集类似,只取相同的元素 ZINTERSTORE destination numkeys key [key ...] [WEIGHTS weight [weight ...]] [AGGREGATE SUM|MIN|MAX]
-
-
Redis中5种数据结构解析
于 2024-07-15 21:41:05 首次发布