redis详细介绍附实例代码--看一篇就够了
自己开发了一个股票智能分析软件,功能很强大,需要的点击下面的链接获取:
https://www.cnblogs.com/bclshuai/p/11380657.html
redis介绍详解附实例代码--看一篇就够了
目录
1 简介... 1
1.1 概述... 1
1.2 特点... 1
1.3 应用场景... 2
2 Redis的数据类型及主要特性... 2
3 redis命令行操作... 3
3.1 服务器操作... 3
3.2 String字符串操作... 4
3.3 列表操作... 4
3.4 set集合的操作... 6
3.5 hash哈希操作... 7
3.6 发布/订阅操作... 8
4 redis代码实例... 9
4.1 Python 操作 redis代码实例... 9
4.2 java代码实例... 11
1 简介
1.1 概述
redis是基于内存的数据库,redis是一个使用ANSI C编写的开源、包含多种数据结构、支持网络、基于内存、可选持久性的键值对存储数据库。用于高并发、快速访问的应用场景。因为关系型数据的瓶颈一般是在磁盘的I/O上。
1.2 特点
- 高并发:基于内存运行,性能高效,支持高并发。
- 分布式:支持分布式,理论上可以无限扩展
- 类型丰富:key-value存储系统,支持多种数据类型
- 通用化:开源的使用ANSI C语言编写、遵守BSD协议、支持网络、可基于内存亦可持久化的日志型、Key-Value数据库,并提供多种语言的API
- 可持久化,可以将内存中的数据定时同步到磁盘中。
1.3 应用场景
(1) 消息缓存服务器,通过订阅和发布的方式传递消息。
(2) 内存数据库,存储一些需要快速访问的数据,低延时高并发。缓存系统(“热点”数据:高频读、低频写)、计数器、消息队列系统、排行榜、社交网络和实时系统。
2 Redis的数据类型及主要特性
Redis提供的数据类型主要分为5种自有类型和一种自定义类型,这5种自有类型包括:String类型、哈希map类型、list列表类型、set集合类型和zset顺序集合类型。redis是一个服务,打开cmd,通过redis-cli.exe -h 127.0.0.1 -p 6379命令连接服务器,然后通过命令行命令往redis内写数据和读数据。
redis可以作为一个内存数据库。redis也可以当作一个消息缓存服务器,通过订阅和发布的方式传递消息。
类型 |
简介 |
命令 |
String |
它是一个二进制安全的字符串,意味着它不仅能够存储字符串、还能存储图片、视频等多种类型, 最大长度支持512M。 |
|
Hash |
该类型是由field和关联的value组成的map。其中,field和value都是字符串类型的。 |
|
List |
该类型是一个插入顺序排序的字符串元素集合, 基于双链表实现。 |
|
Set |
Set类型是一种无顺序集合, 它和List类型最大的区别是:集合中的元素没有顺序, 且元素是唯一的。底层是通过哈希表实现的。 |
|
Sorted set |
ZSet是一种有序集合类型,每个元素都会关联一个double类型的分数权值,通过这个权值来为集合中的成员进行从小到大的排序。与Set类型一样,其底层也是通过哈希表实现的 |
|
3 redis命令行操作
3.1 服务器操作
(1)启动redis
1 |
sudo service redis-server start |
(2)连接上redis-server
1 |
redis-cli -h [ip] -p [端口] |
3.2 String字符串操作
(1)添加
1 2 3 |
set key value 如: set username xiaotuo |
将字符串值value关联到key。如果key已经持有其他值,set命令就覆写旧值,无视其类型。并且默认的过期时间是永久,即永远不会过期。
(2)删除
1 2 3 |
del key 如: del username |
(3) 设置过期时间
1 |
expire key timeout(单位为秒) |
(4)查看过期时间
1 2 3 |
ttl key 如: ttl username |
(5)查看当前redis中的所有key
1 |
keys * |
3.3 列表操作
(1)在列表左边添加元素:lpush key value
- 将值value插入到列表key的表头。如果key不存在,一个空列表会被创建并执行lpush操作。当key存在但不是列表类型时,将返回一个错误。
(2)在列表右边添加元素:rpush key value
- 将值value插入到列表key的表尾。如果key不存在,一个空列表会被创建并执行RPUSH操作。当key存在但不是列表类型时,返回一个错误。
(3)查看列表中的元素:lrange key start stop
- 返回列表key中指定区间内的元素,区间以偏移量start和stop指定,如果要左边的第一个到最后的一个lrange key 0 -1。
(4)移除列表中的元素
- 移除并返回列表key的头元素:lpop key
- 移除并返回列表的尾元素:rpop key
- 移除并返回列表key的中间元素:lrem key count value
- 将删除key这个列表中,count个值为value的元素
(5)指定返回第几个元素:lindex key index
- 将返回key这个列表中,索引为index的这个元素。
- 获取列表中的元素个数
1 2 3 |
llen key 如: llen languages |
- 删除指定的元素
1 2 3 |
lrem key count value 如: lrem languages 0 php |
根据参数 count 的值,移除列表中与参数 value 相等的元素。count的值可以是以下几种
- count > 0:从表头开始向表尾搜索,移除与value相等的元素,数量为count
- count < 0:从表尾开始向表头搜索,移除与 value相等的元素,数量为count的绝对值
- count = 0:移除表中所有与value 相等的值
- 添加元素
3.4 set集合的操作
1 2 3 |
sadd set value1 value2.... 如: sadd team xiaotuo datuo |
- 查看元素
1 2 3 |
smembeers set 如: smembers team |
- 移除元素
1 2 3 |
srem set member... 如: srem team xiaotuo datuo |
- 查看集合中的元素个数
1 2 3 |
scard set 如: scard team1 |
- 获取多个集合的交集
1 2 3 |
sinter set1 set2 如: sinter team1 team2 |
- 获取多个集合的并集
1 2 3 |
sunion set1 set2 如: sunion team1 team2 |
- 获取多个集合的差集
1 2 3 |
sdiff set1 set2 如: sdiff team1 team2 |
3.5 hash哈希操作
- 添加一个新值
1 2 3 |
hset key field value 如: hset website baidu baidu.com |
将哈希表key中的域field的值设为value。
如果key不存在,一个新的哈希表被创建并进行 HSET操作。如果域 field已经存在于哈希表中,旧值将被覆盖。
- 获取哈希中的field对应的值
1 2 3 |
hget key field 如: hget website baidu |
- 删除field中的某个field
1 2 3 |
hdel key field 如: hdel website baidu |
- 获取某个哈希中所有的field和value
1 2 3 |
hgetall key 如: hgetall website |
- 获取某个哈希中所有的field
1 2 3 |
hkeys key 如: hkeys website |
- 获取某个哈希中所有的值
1 2 3 |
hvals key 如: hvals website |
- 判断哈希中是否存在某个field
1 2 3 |
hexists key field 如: hexists website baidu |
- 获取哈希中总共的键值对
1 2 3 |
hlen field 如: hlen website |
3.6 发布/订阅操作
- 给某个频道发布消息
1 |
publish channel message |
- 订阅某个频道的消息
1 |
subscribe channel |
4 redis代码实例
4.1 Python 操作 redis代码实例
- 安装
python-redis:pip install redis
- 新建一个文件比如
redis_test.py
,然后初始化一个redis
实例变量,并且在ubuntu
虚拟机中开启redis
。比如虚拟机的ip
地址为192.168.174.130
。示例代码如下:
1 2 3 4 |
|
- 对字符串的操作:操作
redis
的方法名称,跟之前使用redis-cli
一样,现就一些常用的来做个简单介绍,示例代码如下(承接以上的代码)
1 2 3 4 5 6 7 8 9 10 11 |
|
- 对列表的操作:同字符串操作,所有方法的名称跟使用
redis-cli
操作是一样的:
1 2 3 4 5 6 7 8 9 10 |
|
- 对集合的操作:
1 2 3 4 5 6 7 8 9 10 |
|
- 对哈希(
hash
)的操作:
1 2 3 4 5 6 7 8 |
|
- 事务(管道)操作:
redis
支持事务操作,也即一些操作只有统一完成,才能算完成。否则都执行失败,用python
操作redis
也是非常简单,示例代码如下:
1 2 3 4 5 6 7 8 |
|
4.2 java代码实例
https://www.jianshu.com/p/5596c3a4978d
参考文献
https://www.cnblogs.com/renshaoqi/p/10617238.html
https://www.cnblogs.com/powertoolsteam/p/redis.html
https://www.jianshu.com/p/5596c3a4978d
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· 【自荐】一款简洁、开源的在线白板工具 Drawnix