当前位置: 首页> 文旅> 艺术 > Redis

Redis

时间:2025/7/11 22:51:05来源:https://blog.csdn.net/weixin_57535054/article/details/142134639 浏览次数:0次

Reis

Redis 是一个开源的高性能键值存储数据库,它通常被用作数据结构服务器。由于其出色的性能和灵活性,Redis 被广泛应用于缓存、会话管理、消息队列、排行榜、实时分析等场景。

主要特点:

1.数据结构丰富:Redis 不仅支持简单的键值对,还支持多种数据结构,如字符串(Strings)、列表(Lists)、集合(Sets)、有序集合(Sorted Sets)、哈希表(Hashes)、位图(Bitmaps)、超日志(HyperLogLogs)和地理空间索引(Geospatial Indexes)。

2.内存存储与持久化:Redis 将所有数据保存在内存中,以实现快速的读写访问。同时,它提供了多种持久化选项,包括RDB(Redis Database)快照和AOF(Append Only File)日志,以确保数据的安全性。

3.原子操作:Redis 的所有操作都是原子性的,这意味着它们要么完全执行,要么完全不执行。这使得 Redis 在并发环境下非常可靠。

4.支持发布/订阅模式:Redis 支持发布/订阅消息模式,允许客户端订阅一个或多个频道,并接收发布到这些频道的消息。

5.支持Lua脚本:Redis 支持使用Lua脚本进行复杂的操作,这使得用户可以将多个命令组合成一个原子操作,从而实现更复杂的逻辑。

6.高可用性和分布式:Redis 提供了哨兵(Sentinel)系统和集群(Cluster)模式,以支持高可用性和水平扩展。

应用场景:

  • 缓存系统:由于其高速读写能力,Redis 常被用作缓存解决方案,以减少数据库的访问次数和提高应用性能。
  • 会话存储:Redis 可以用来存储用户会话信息,尤其适用于分布式系统中。
  • 消息队列:Redis 的列表数据结构和发布/订阅机制使其可以作为消息队列系统使用。
  • 实时计数器:例如,用于统计网站访问量、视频播放次数等。
  • 排行榜/领导榜:有序集合数据结构非常适合实现排行榜系统。
  • 地理空间数据处理:Redis 的地理空间索引可以用于存储地理位置信息,并进行各种地理空间查询。

总结:

Redis 是一个功能强大的工具,适用于多种不同的应用场景。它的高性能和丰富的数据结构使其成为开发人员在构建需要快速访问和处理大量数据的应用时的首选。不过,由于它将数据保存在内存中,需要考虑内存成本和数据持久化策略。

下载方式

Linux下载

yum install redis

输入redis-server启动redis服务端

输入redis-cli启动redis客户端

6379是redis默认端口号

redis的数据是以键值对存储 key value

redis是以二进制存储 存中文时 输出的都是十六进制

登陆时 redis-cli --raw展示原始数据 就可以展示中文


基本指令

set key value 设置键值对

get ky 获取值

del key删除值 

exists key 表示值是否存在 (1存在 0不存在)

keys * 查找所有键

keys *me 查找所有以me结尾的键

flushall 删除所有键 慎用

ttl key 显示键过期时间 (-2表示已过期 -1表示没设置过期时间 其余都是还剩多少时间)

expire key 10 设置已经存在的键过期时间为10s

setex key 5 value 设置键值 过期时间为5s

setnx key value 如何key不存在再创建

[root@VM-12-13-centos Redis]# redis-cli --raw
127.0.0.1:6379> set name zhangsan
OK
127.0.0.1:6379> get name
zhangsan
127.0.0.1:6379> exists name
1
127.0.0.1:6379> keys *
name
name1
letter
result
geekhour
person
courd
127.0.0.1:6379> keys *me
name
127.0.0.1:6379> del name
1
127.0.0.1:6379> ttl name
-2
127.0.0.1:6379> ttl name1
-1
127.0.0.1:6379> expire name1 10
1
127.0.0.1:6379> ttl name1
6
127.0.0.1:6379> ttl name1
4
127.0.0.1:6379> ttl name1
3
127.0.0.1:6379> setex boot 5 ko
OK
127.0.0.1:6379> ttl boot
2
127.0.0.1:6379> ttl boot
1
127.0.0.1:6379> ttl boot
-2
127.0.0.1:6379> setnx boot ko
1

列表

lpush key a 往头部插入a lpush key a b c 往头部插入a b c

rpush key a 往尾部插入 a rpush key a b c往尾部插入 a b c

lrange key 起始位置 结束位置 (0 -1)查询全部

lpop key 删除头部首元素 lpop key 2删除头部前两个元素

rpop key 删除尾部首元素 rpop key 2删除尾部后两个元素

llen key 查看列表长度

ltrim key 1 3 只保留下标1-3之内的元素,其余均删除

127.0.0.1:6379> lpush letter a b c
5
127.0.0.1:6379> rpush letter a b c
8
127.0.0.1:6379> lrange letter 0 -1
c
b
a
a
b
a
b
c
127.0.0.1:6379> lpop letter 2
c
b
127.0.0.1:6379> rpop letter 2
c
b
127.0.0.1:6379> lrange letter 0 -1
a
a
b
a
127.0.0.1:6379> llen letter
4

集合

sadd key value1 value2... 插入一个集合 集合的值不允许重复

smembers key 查看集合的所有值

sismember key val 查看val是否在集合中

srem key val 删除集合中的val的值

127.0.0.1:6379> sadd has 1 2 3 4 9
5
127.0.0.1:6379> smembers has
1
2
3
4
9
127.0.0.1:6379> sismember has 9
1
127.0.0.1:6379> sismember has 5
0
127.0.0.1:6379> srem has 9
1

有序集合

因为要排序 排序的是key 所以要排序的要放在key位置

zadd key key1 val1 key2 val2 key3 val3

zrange key 0 -1 只显示key

zrange key 0 -1 withscores 显示key和value

zscore key val 显示key

zrank key val1 显示排名位置 从小到大

zrevrank key val1 显示排位位置 从打到小

127.0.0.1:6379> zadd result 680 qinghua 660 beida 650 fudan 640 zheda
4
127.0.0.1:6379> zrange result 0 -1
zheda
fudan
beida
qinghua
127.0.0.1:6379> zrange result 0 -1 withscores
zheda
640
fudan
650
beida
660
qinghua
680
127.0.0.1:6379> zrank result fudan
1
127.0.0.1:6379> zrevrank result fudan
2

哈希

hset 哈希名 key val

hget 哈希名 key 获取哈希的值

hgetall 哈希名 获取哈希的所有键值对

hdel 哈希名 key 删除键值对

hexists 哈希名 key 判断键值对是否存在 (1存在 0不存在)

hkeys 哈希名 获取所有键

hlen 哈希名 获取键值对的数量

127.0.0.1:6379> hset person name zhangsan
1
127.0.0.1:6379> hget person name
zhangsan
127.0.0.1:6379> hgetall person
name
zhangsan
127.0.0.1:6379> hexists person name
1
127.0.0.1:6379> hkeys person
name
127.0.0.1:6379> hlen person
1
127.0.0.1:6379> hdel person name
1

发布订阅功能

subscribe geekhour 订阅名为geekhour的频道

publish geekhour mes 发布geekhour频道的mes消息

缺点 消息无法持久化,消息没用历史记录

消息队列

名称 自动生成唯一消息id 键值对

xadd geekhour * course redis

xlen geekhour 消息的数量

xrange geekhour - + 显示所有消息内容

xdel geekhour 消息id 删除消息

xtrim geekhour maxlen 0 删除所有消息

xread count 2 block 1000 streams geekhour 0 一次读取两条 如果没有就阻塞1秒 在geekhour读 从第0条开始读

如果 0这里大于消息队列内的消息 就会阻塞一秒后退出 如果换成$ 就会从现在开始阻塞等待新的消息

xgroup create geekhour group1 0 创建一个id为0 名字为group1的消费者组

xinfo groups geekhour 查看消费者组信息

消息队列名 消费者组名 消费者

xgroup createconsumer geekhour group1 consumer1 添加消费者

消费者组 消费者 消息队列名 从现在开始读取最新消息

xreadgroup group group1 consumer1 count 2 block 3000 streams geekhour >

127.0.0.1:6379> xadd geekhour * course redis
1726031344197-0
127.0.0.1:6379> xlen geekhour
1
127.0.0.1:6379> xrange geekhour - +
1726031344197-0
course
redis
127.0.0.1:6379> xadd geekhour * age 18
1726031404455-0
127.0.0.1:6379> xlen geekhour
2
127.0.0.1:6379> xrange geekhour - +
1726031344197-0
course
redis
1726031404455-0
age
18
127.0.0.1:6379> xdel geekhour 1726031404455-0
1
127.0.0.1:6379> xrange geekhour - +
1726031344197-0
course
redis
127.0.0.1:6379> xadd geekhour * name zhangsan
1726031483285-0
127.0.0.1:6379> xadd geekhour * age 18
1726031492794-0
127.0.0.1:6379> xread count 2 block 1000 streams geekhour 0
geekhour
1726031344197-0
course
redis
1726031483285-0
name
zhangsan
127.0.0.1:6379> xgroup create geekhour group1 0
OK
127.0.0.1:6379> xinfo groups geekhour
name
group1
consumers
0
pending
0
last-delivered-id
0-0
entries-readlag127.0.0.1:6379> xgroup createconsumer geekhour group1 consumer1
1
127.0.0.1:6379> xreadgroup group group1 consumer1 count 2 block 3000 streams geekhour >
geekhour
1726031344197-0
course
redis
1726031483285-0
name
zhangsan

地理空间

geoadd city 116.405285 39.904989 beijing 添加北京的经纬度

geopos city beijing 查看北京经纬度

geodist city beijing shanghai 查看北京和上海的距离 默认为m 加个km 显示km

geosearch city frommember shanghai byradius 300 km 查看上海半径300km内的城市

127.0.0.1:6379> geoadd city 116.405285 39.904989 beijing
1
127.0.0.1:6379> geopos city beijing
116.40528291463851929
39.9049884229125027
127.0.0.1:6379> geodist city beijing shanghai127.0.0.1:6379> geoadd city 121.4737 31.2304 shanghai
1
127.0.0.1:6379> geodist city beijing shanghai
1067771.2670
127.0.0.1:6379> geodist city beijing shanghai km
1067.7713
127.0.0.1:6379> geosearch city frommember beijing byradius 300 km
beijing

关键字:Redis

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

责任编辑: