Redis,英文全称是Remote Dictionary Server(远程字典服务),是一个开源的使用ANSI C语言编写、支持网络、可基于内存亦可持久化的日志型、Key-Value数据库,并提供多种语言的API。
与MySQL数据库不同的是,Redis的数据是存在内存中的。它的读写速度非常快,每秒可以处理超过10万次读写操作。因此redis被广泛应用于缓存,另外,Redis也经常用来做分布式锁。除此之外,Redis支持事务、持久化、LUA 脚本、LRU 驱动事件、多种集群方案。
powershellSET key value [expiration EX seconds|PX milliseconds] [NX|XX]
例: 设置一个键值对
powershell127.0.0.1:6379> SET name gyc OK 127.0.0.1:6379> GET name "gyc"
powershell127.0.0.1:6379> SET Name GYC OK 127.0.0.1:6379> GET Name "GYC"
powershell127.0.0.1:6379> SET age 18 OK 127.0.0.1:6379> GET age "18"
powershell127.0.0.1:6379> DEL name (integer) 1 127.0.0.1:6379> get name (nil)
nuil
则表示此键已经被删除掉EXISTS
命令判断此键是否存在powershell127.0.0.1:6379> EXISTS name (integer) 0
powershell127.0.0.1:6379> EXISTS age (integer) 1
KEYS
命令判断存在哪些键powershell127.0.0.1:6379> KEYS * 1) "age" 2) "Name"
powershell127.0.0.1:6379> KEYS *me 1) "Name"
FLUSHALL
删除所有的键powershell127.0.0.1:6379> FLUSHALL OK 127.0.0.1:6379> KEYS * (empty list or set)
powershell127.0.0.1:6379> set name 줘ᄡᄈ OK 127.0.0.1:6379> GET name "\xb8\xdf\xd4\xb4\xb3\xc9"
--raw
参数, 以解决Redis中文乱码的情况powershell127.0.0.1:6379> quit PS C:\Users\30372> redis-cli.exe --raw 127.0.0.1:6379> GET name 高源成
--raw
参数表示以原始的方式显示clear
命令清空屏幕powershell127.0.0.1:6379> clear
TTL
(Time to live)命令查看键值对的过期时间powershell127.0.0.1:6379> TTL name -1
-1
表示没有设置过期时间EXPIRE
命令设置键值对的过期时间powershell127.0.0.1:6379> EXPIRE name 10 1 127.0.0.1:6379> TTl name 3 127.0.0.1:6379> TTl name 2 127.0.0.1:6379> TTl name 0 127.0.0.1:6379> TTl name -2 127.0.0.1:6379> GET name
-2
时表示当前键值对过期SETEX
命令设置一个带过期时间的键值对powershell127.0.0.1:6379> SETEX name 10 gyc OK 127.0.0.1:6379> GET name gyc 127.0.0.1:6379> TTl name 6 127.0.0.1:6379> TTl name 5 127.0.0.1:6379> TTl name 4 127.0.0.1:6379> TTl name 1 127.0.0.1:6379> TTl name -2
SETNX
命令, 只有当键不存在时才设置键的值powershell127.0.0.1:6379> SETNX Name Gyc 1 127.0.0.1:6379> GET Name Gyc 127.0.0.1:6379> SETNX Name gyc 0
1
则表示键不存在,成功设置值0
则表示键存在,不进行任何设置操作列表(List),一般用来存储一组有顺序的数据, 与数组的概念有些相似, 常用
LPUSH
及RPUSH
命令将元素添加到头部或者尾部.
添加元素
powershell127.0.0.1:6379> LPUSH letter a (integer) 1
获取元素
powershell127.0.0.1:6379> LRANGE letter 0 -1 1) "a"
LRANGE
命令获取元素0 -1
指定元素的位置, 0 为默认起始位置, -1 为最后一个元素位置powershell127.0.0.1:6379> LRANGE letter 0 -1 1) "a" 127.0.0.1:6379> LPUSH letter b (integer) 2 127.0.0.1:6379> LRANGE letter 0 -1 1) "b" 2) "a" 127.0.0.1:6379> LPUSH letter c d e (integer) 5 127.0.0.1:6379> LRANGE letter 0 -1 1) "e" 2) "d" 3) "c" 4) "b" 5) "a"
LPUST
会安照从左相右的顺序添加, 因此最后添加的元素就会排在最前面powershell127.0.0.1:6379> RPUSH letter f (integer) 7 127.0.0.1:6379> LRANGE letter 0 -1 1) "e" 2) "d" 3) "c" 4) "b" 5) "a" 6) "f"
RPUST
会安照从右向左的顺序添加, 元素就会排在最后面使用LPOP
和RPOP
来删除列表的元素
powershell127.0.0.1:6379> RPOP letter "f" 127.0.0.1:6379> LRANGE letter 0 -1 1) "e" 2) "d" 3) "c" 4) "b" 5) "a"
powershell127.0.0.1:6379> LPOP letter 2 127.0.0.1:6379> LRANGE letter 0 -1 1) "c" 2) "b" 3) "a"
powershell127.0.0.1:6379> LLEN letter (integer) 3
LTRIM
命令删除指定元素以外的元素powershell127.0.0.1:6379> flushall OK 127.0.0.1:6379> lpush letter a b c d e (integer) 5 127.0.0.1:6379> LRANGE letter 0 -1 1) "e" 2) "d" 3) "c" 4) "b" 5) "a" 127.0.0.1:6379> LTRIM letter 1 3 OK 127.0.0.1:6379> LRANGE letter 0 -1 1) "d" 2) "c" 3) "b"
e
和a
集合(set) 是一种无序集合, 和列表的区别在于列表的元素可以重复, 而集合(set)中元素是不能重复的
set中的相关命令都是以S
开头
powershell127.0.0.1:6379> SADD course Redis (integer) 1 127.0.0.1:6379> SMEMBERS course 1) "Redis"
SADD
集合名称
添加元素
SMEMBERS
命令查看集合中的元素powershell127.0.0.1:6379> SADD course Redis (integer) 0 127.0.0.1:6379> SMEMBERS course 1) "Redis"
SISMEMBER
命令判断元素是否在集合中powershell127.0.0.1:6379> SISMEMBER course Redis (integer) 1 127.0.0.1:6379> SISMEMBER course Python (integer) 0
1
表示元素在集合中0
表示元素不在集合中powershell127.0.0.1:6379> SREM course Redis (integer) 1 127.0.0.1:6379> SMEMBERS course (empty list or set)
有序集合(SortedSet)/ (ZSet), 与集合的区别为
ZSet
的每个元素会关联一个浮点类型的分数, 后会按照分数对集合中的元素按照从小到大的顺序进行排序
有序集合的成员都是唯一的, 但是分数是可以重复的
有序集合的命令都是以Z
开头的
powershell127.0.0.1:6379> ZADD result 680 A 660 B 650 C 640 D (integer) 4
ZADD
有序集合的名字
分数
元素(成员)
powershell127.0.0.1:6379> ZRANGE result 0 -1 1) "D" 2) "C" 3) "B" 4) "A"
ZRANGE
有序集合名字
起始位置
结束位置
ZRANGE
加上 WITHSCORES
会显示分数powershell127.0.0.1:6379> ZRANGE result 0 -1 WITHSCORES 1) "D" 2) "640" 3) "C" 4) "650" 5) "B" 6) "660" 7) "A" 8) "680"
powershell127.0.0.1:6379> ZSCORE result A "680"
ZSCORE
有序集合名字
查询元素名字
powershell127.0.0.1:6379> ZRANK result A (integer) 3
powershell127.0.0.1:6379> ZREVRANK result A (integer) 0
哈希(Hash)是一个字符类型的字段和值的映射表, 键值对的集合, 常用来存储对象
哈希相关命令常以H
开头
powershell127.0.0.1:6379> HSET person name gyc (integer) 1 127.0.0.1:6379> HSET person age 18 (integer) 1
powershell127.0.0.1:6379> HGET person name "gyc" 127.0.0.1:6379> HGET person age "18" 127.0.0.1:6379> HGETALL person 1) "name" 2) "gyc" 3) "age" 4) "18"
powershell127.0.0.1:6379> HDEL person age (integer) 1 127.0.0.1:6379> HGET person age (nil) 127.0.0.1:6379> HGETALL person 1) "name" 2) "gyc"
powershell127.0.0.1:6379> HEXISTS person age (integer) 0 127.0.0.1:6379> HEXISTS person name (integer) 1
1
表示存在0
表示不存在powershell127.0.0.1:6379> PUBLISH gyc "Hi Redis" (integer) 1
PUBLISH
频道名称
发布消息内容
powershell127.0.0.1:6379> SUBSCRIBE gyc Reading messages... (press Ctrl-C to quit) 1) "subscribe" 2) "gyc" 3) (integer) 1 1) "message" 2) "gyc" 3) "Hi Redis"
SUBSCRIBE
频道名称
可以有多个订阅频道(终端)
消息无法持久化
无法记录历史消息 等
消息队列(Stream)是redis5.0后, 引入的新的数据结构, 是一种轻量型的消息队列, 用来解决发布模式的一些局限性
消息队列(Stream)的命令都以X
开头
powershell127.0.0.1:6379> XADD gyc * course Redis "1721541334092-0" 127.0.0.1:6379> XADD gyc * course git "1721541339773-0" 127.0.0.1:6379> XADD gyc * course Docker "1721541342874-0"
XADD
流的名称(频道名称)
消息ID
字段名
字段的值
*
代表自动生成条目IDpowershell127.0.0.1:6379> XRANGE gyc - + 1) 1) "1721541334092-0" 2) 1) "course" 2) "Redis" 2) 1) "1721541339773-0" 2) 1) "course" 2) "git" 3) 1) "1721541342874-0" 2) 1) "course" 2) "Docker"
XRANGE
流的名称(频道名称)
start
end
-
和+
代表所有消息powershell127.0.0.1:6379> XRANGE gyc 1721541334092-0 1721541334092-0 1) 1) "1721541334092-0" 2) 1) "course" 2) "Redis"
XRANGE
流的名称(频道名称)
ID范围
powershell127.0.0.1:6379> XDEL gyc 1721541339773-0 (integer) 1 127.0.0.1:6379> XRANGE gyc - + 1) 1) "1721541334092-0" 2) 1) "course" 2) "Redis" 2) 1) "1721541342874-0" 2) 1) "course" 2) "Docker"
XDEL
流的名称(频道名称)
要删除的ID
powershell127.0.0.1:6379> XTRIM gyc MAXLEN 0 (integer) 2 127.0.0.1:6379> XRANGE gyc - + (empty list or set)
XTRIM
流的名称
设置的最大条目数
0
表示将流的最大长度设置为 0。这意味着会删除所有条目,因为长度 0 不允许有任何条目。powershell127.0.0.1:6379> XADD student 100-1 course Redis "100-1" 127.0.0.1:6379> XADD student 100-2 course git "100-2" 127.0.0.1:6379> XADD student 100-3 course python "100-3" 127.0.0.1:6379> XREAD COUNT 2 BLOCK 1000 STREAMS student 0 1) 1) "student" 2) 1) 1) "100-1" 2) 1) "course" 2) "Redis" 2) 1) "100-2" 2) 1) "course" 2) "git"
XREAD
指定最大读取消息条数
指定阻塞时间(ms)
STREAMS
流的名称
起始ID
COUNT 2
BLOCK 1000
STREAMS
student
0
powershell127.0.0.1:6379> XREAD COUNT 2 BLOCK 1000 STREAMS student 100-1 1) 1) "student" 2) 1) 1) "100-2" 2) 1) "course" 2) "git" 2) 1) "100-3" 2) 1) "course" 2) "python" 127.0.0.1:6379> XREAD COUNT 2 BLOCK 1000 STREAMS student 100-2 1) 1) "student" 2) 1) 1) "100-3" 2) 1) "course" 2) "python" 127.0.0.1:6379> XREAD COUNT 2 BLOCK 1000 STREAMS student 100-3 (nil) (1.09s)
100-1
由于ID是从100-0
开始的, 因此只读到了后两条消息nil
powershell127.0.0.1:6379> XADD student 100-6 course Lua "100-6" 127.0.0.1:6379> XREAD COUNT 2 BLOCK 10000 STREAMS student $ 1) 1) "student" 2) 1) 1) "100-6" 2) 1) "course" 2) "Lua" (7.05s)
$
表示从最新的消息开始读取。即只会读取在命令执行之后新添加的消息。powershell127.0.0.1:6379> XGROUP CREATE student group1 0 OK
XGROUP CREATE
消息名称
组名
ID
powershell127.0.0.1:6379> XINFO GROUPS student 1) 1) "name" 2) "group1" 3) "consumers" 4) (integer) 0 5) "pending" 6) (integer) 0 7) "last-delivered-id" 8) "0-0"
CREATECONSUMER
命令式Redis 6.2.0 后出现的命令
地理空间(Geospatia)是Redis 3.2 版本中的新特性, 提供一种用于存取地理位置信息的数据结构, 同时支持对地理位置进行各种计算操作(例如计算两地间的距离、获取经纬度、查找附近的人等)
地理位置相关命令都以GEO
开头
powershell127.0.0.1:6379> GEOADD city 116.405285 39.904989 beijing (integer) 1
GEOADD
key的名称
经度
纬度
城市名称(值的名称)
powershell127.0.0.1:6379> GEOADD city 121.472644 31.231706 shanghai 114.085947 22.547 shenzhen 37 23.125178 guangzhou 120.153576 30.287459 hangzhou (integer) 4
powershell127.0.0.1:6379> GEOPOS city beijing 1) 1) "116.40528291463851929" 2) "39.9049884229125027"
powershell127.0.0.1:6379> GEODIST city beijing shanghai "1067597.9668"
powershell127.0.0.1:6379> GEODIST city beijing shanghai km "1067.5980"
powershell127.0.0.1:6379> GEORADIUSBYMEMBER city shanghai 2000 km 1) "shenzhen" 2) "hangzhou" 3) "shanghai" 4) "beijing"
本文作者:GYC
本文链接:
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!