theme: fancy highlight: github
一、什么是Redis
Redis 是一种开源的内存型数据库,它以高速、灵活和可扩展性而闻名。Redis 主要用于存储和管理键值对数据,其中键(key)和值(value)可以是各种数据类型,如字符串、列表、哈希、集合等。
Redis 的数据全部存储在内存中,这使得它能够提供极快的数据读写速度,适用于需要快速响应和处理大量数据的场景。它还支持数据的持久化,以便在服务器重启或故障时能够恢复数据。
Redis7官方地址-->点击进入
二、十大数据类型介绍及使用
2.1 Redis环境搭建
2.1.1 用虚拟机 VMware Workstation Pro 搭建 centos7
2.1.2 用 FinalShell 连接linux
【成功连接画面】
我们这里使用Docker+Shell脚本安装Redis最新版
2.1.2 用 Another Redis Desktop Manager 连接Redis
2.2 redis列表(List)
List
是一种有序的元素集合,可以存储多个元素。它类似于数组,但具有一些特殊的功能和操作。
List
列表可以包含重复的元素,并且元素的顺序是按照插入的顺序来维护的。列表的两端都可以进行元素的插入和删除操作,具有高效的插入和删除性能。
2.2.1 lpush/rpush/lrange
lpush key vule1 vule2 : (向列表左边添加vule1、vule2)
rpush key vule1 vule2 : (向列表右边添加vule1、vule2)
lrange key start stop : (从指定下标获取vule值)
2.2.2 lpop/rpop
lpop key : (向左边弹出一个vule)
rpop key : (向右边弹出一个vule)
2.2.3 index
lindex key index : (通过索引获取列表中的元素)
2.2.4 llen
llen key : (获取列表的个数)
2.2.5 lrem
lrem key count value : (从左边删除指定数量的vule)
2.2.6 ltrim
ltrim key start stop : (截取指定索引区间的元素)
2.2.7 rpoplpush
rpoplpush source destination : (移除列表的最后一个元素,并将该元素添加到另一个列表并返回)
2.2.8 lset
Iset key index value: (将指定下标的值替换)
2.2.9 linsert
linsert key BEFORE|AFTER pivot value (在list某个已有值的前后再添加具体值)
2.3 redis字符串(String)
String
类型的值可以是任意的字符串,包括文本、二进制数据等。
String
类型是一个key 对应一个vule
2.3.1 最常用的get set命令
2.3.2通过mset、mget同时设置/得到多个值
msetnx:同时设置一个或多个 key-value 对,当且仅当所有给定 key 都不存在。
2.3.3通过getrange、setrange获取指定区间的的值
getrange的使用:
setrange的使用:
2.3.4 数值增加和减少
一定是数字才能进行此操作
incr key : (加一)
incrby key increment : (增加指定的整数)
decr key : (减一)
decrby key increment : (减少指定的整数)
2.3.5 获取字符串长度和内容追加
strlen key : (获取字符串长度)
append key vule : (内容追加)
2.3.6 分布式锁
setex key second vule : (设置带过期时间的key,动态设置)
setnx key vule : (只有在 key 不存在时设置 key 的值。)
2.3.7 得到值再设置值
getset key vule : (先返回值再设置值)
2.4 redis哈希表(Hash)
Hash
KV模式不变,但V是一个键值对,相当于Java表中的Map<String,Map<object,object>>
2.4.1 hset/hget/hmset/hmget/hgetall/hdel
hset key field value :
hget key field value :
hmset key field value [field value ..] : (设置多个file vule)
hmget key field [field ..] : (获取多个file vule)
hgetall key : (获取对应key的所有vlues值)
HDEL key field [field ...] : (获取对应key的所有vlues值)
2.4.2 hlen
hlen key : (获取某个key内的全部数量)
2.4.3 hexists
hexists key field : (判断某个key里面某个值的key存不存在)
2.4.4 hkeys/hvals
hkeys key : (获取某个key值的所有file里面的所有key)
hvals key : (获取某个key值的所有file里面的所有vule)
2.4.5 hincrby/hincrbyfloat
hincrby key field increment : (对某个key里面的file里面的整数vule进行指定数字的增加)
hincrbyfloat key field increment : (对某个key里面的file里面的浮点数vule进行指定数字的增加)
2.4.6 hsetnx
hsetnx key field value : (不存在赋值,存在了无效。)
2.4 redis集合(Set)
Set
是一种无序集合类型,它不允许存储重复的元素。
2.4.1 sadd、smembers
sadd key member [member ...] : (添加值)
smembers key : (便利集合所有元素)
2.4.2 smember
smembers key 2 : (判断元素是否在集合中)
2.4.3 srem
srem key member [member ...] : (删除元素)
2.4.4 scard
scard key : (获取集合里面的元素个数)
2.4.5 srandmembr
srandmembr key [count] : (从集合中随机展现设置的数字个数元素,元素不删除)
2.4.6 spop
spop key : (从集合中随机弹出一个元素,出一个删一个)
2.4.7 smove
smove source destination member : (将原集合的某个元素移交给目标)
2.4.8 sdiff
sdiff key [key ..] : (属于A但不属于B的元素构成的集合)
2.4.9 sunion
sunion key [key ..] : (属于A或者属于B的元素合并后的集合)
2.4.10 sinter
sinter key [key ..] : (属于A同时也属于B的共同拥有的元素构成的集合)
2.5 redis有序集合(ZSet)
Set
是一种有序集合类型,它不允许存储重复的元素。
2.5.1 zadd
ZADD key score member [score] [member] : (向集合添加元素)
2.5.2 zrange
zrange key start stop [WITHSCORES] : (按照元素分数从小到大的顺序返回索引从start到stop之间的所有元素)
2.5.3 zrevrange
zrevrange key start stop [WITHSCORES] : (按照元素分数从大到小的顺序返回索引从start到stop之间的所有元素)
2.5.4 zrangestore
ZRANGESTORE dst src min max [BYSCORE|BYLEX] [REV] [LIMIT offset count] : (获取指定分数范围的元素)
2.5.5 zscore
ZSCORE key member : (获取元素的分数)
2.5.6 zcard
zcard key : (获取集合中元素的数量)
2.5.7 zrem
zrem key member [member ...] : (删除元素)
2.5.8 zincrby
zincrby key increment member : (增加某个元素的分数)
2.5.9 zcount
zcount key min max : (获得指定分数范围内的元素个数)
2.5.10 zpopmin、zpopmax
zpopmin key [count] : (删除key的指定个数的最小值) zpopmax key [count] : (删除key的指定个数的最大值)
2.5.11 zrank
zrank key member : (获取下标)
zrevrank key member : (逆序获取下标)