redis
一、简介
1.简介
Redis 是完全开源免费的,遵守BSD协议,是一个高性能的key-value数据库。
Redis 与其他 key - value 缓存产品有以下三个特点:
- 支持数据的持久化,可以将内存中的数据保持在磁盘中,重启的时候可以再次加载进行使用。
- 不仅仅支持简单的key-value类型的数据,同时还提供list,set,zset,hash等数据结构的存储。
- 支持数据的备份,即master-slave模式的数据备份。
2.优势
- 性能极高 – Redis能读的速度是110000次/s,写的速度是81000次/s 。
- 丰富的数据类型 – Redis支持二进制案例的 Strings, Lists, Hashes, Sets 及 Ordered Sets 数据类型操作。
- 原子 – Redis的所有操作都是原子性的,同时Redis还支持对几个操作全并后的原子性执行。
- 丰富的特性 – Redis还支持 publish/subscribe, 通知, key 过期等等特性。
3.和其他key-value的不同
- 有着更为复杂的数据结构并且提供对他们的原子性操作,这是一个不同于其他数据库的进化路径。
- 运行在内存中但是可以持久化到磁盘,所以在对不同数据集进行高速读写时需要权衡内存,应为数据量不能大于硬件内存。
- 相比在磁盘上相同的复杂的数据结构,在内存中操作起来非常简单,这样Redis可以做很多内部复杂性很强的事情。
- 在磁盘格式方面他们是紧凑的以追加的方式产生的,因为他们并不需要进行随机访问。
二、安装
三、数据类型
Redis支持五种数据类型:string(字符串),hash(哈希),list(列表),set(集合)及zset(sorted set:有序集合)。
String(字符串)#
string是redis最基本的类型,可以理解成与Memcached一模一样的类型,一个key对应一个value。
string类型是二进制安全的。意思是redis的string可以包含任何数据。比如jpg图片或者序列化的对象 。
string类型是Redis最基本的数据类型,一个键最大能存储512MB。
127.0.0.1:6379> set name "chancey" OK 127.0.0.1:6379> get name "chancey"
Hash(哈希)
Redis hash 是一个键值对集合。
Redis hash是一个string类型的field和value的映射表,hash特别适合用于存储对象。
127.0.0.1:6379> hmset mykey:chancey 18 man OK 127.0.0.1:6379> hgetall mykey:chancey 1) "18" 2) "man"
以上实例中 hash 数据类型存储了包含用户脚本信息的用户对象。
List(列表)
列表是简单的字符串列表,按照插入顺序排序。可以添加一个元素到列表的头部(左边)或者尾部(右边)。
127.0.0.1:6379> lpush name chancey (integer) 1 127.0.0.1:6379> lpush name suxin (integer) 2 127.0.0.1:6379> lpush name zzx (integer) 3 127.0.0.1:6379> lrange name 0 10 1) "zzx" 2) "suxin" 3) "chancey"
Set(集合)
Redis的Set是string类型的无序集合。
集合是通过哈希表实现的,所以添加,删除,查找的复杂度都是O(1)。表示计算量不变
添加一个string元素到,key对应的set集合中,成功返回1,如果元素以及在集合中返回0,key对应的set不存在返回错误。
语法是 sadd key member
127.0.0.1:6379> sadd age 18 (integer) 1 127.0.0.1:6379> sadd age 19 (integer) 1 127.0.0.1:6379> sadd age 19 (integer) 0 127.0.0.1:6379> sadd age 20 (integer) 1 127.0.0.1:6379> smembers age 1) "18" 2) "19" 3) "20"
不难发现,以上代码中,重复插入了19,但是查出来的值却只有一个,根据集合内元素的唯一性,第二次插入的元素将被忽略。
zset(sorted set:有序集合)
zset 和 set 一样也是string类型元素的集合,且不允许重复的成员。
不同的是每个元素都会关联一个double类型的分数。redis正是通过分数来为集合中的成员进行从小到大的排序。
zset的成员是唯一的,但分数可以重复。
语法 zadd key score member
127.0.0.1:6379> zadd sql 1 mysql (integer) 1 127.0.0.1:6379> zadd sql 2 mongodb (integer) 1 127.0.0.1:6379> zadd sql 3 orcale (integer) 1 127.0.0.1:6379> zadd sql 3 orcale (integer) 0 127.0.0.1:6379> zrange sql 0 10 withscores 1) "mysql" 2) "1" 3) "mongodb" 4) "2" 5) "orcale" 6) "3"
四、数据备份与恢复
数据备份
用save命令
该命令将在 redis 安装目录中创建dump.rdb文件。
127.0.0.1:6379> save OK 127.0.0.1:6379> quit [root@SuXin ~]# cd redis-3.2.8 [root@SuXin ~]# cd /var/lib/redis/6379/
[root@SuXin 6379]# ls
dump.rdb
Bgsave
创建 redis 备份文件也可以使用命令 bgsave,该命令在后台执行。
数据恢复
只需将备份文件 (dump.rdb) 移动到 redis 安装目录并启动服务即可。获取 redis 目录可以使用 config
[root@SuXin 6379]# redis-cli
127.0.0.1:6379> config get dir
1) "dir"
2) "/var/lib/redis/6379"
六、远程连接
通过 redis 的配置文件设置密码参数,这样客户端连接到 redis 服务就需要密码验证,这样可以让redis 服务更安全。
查看配置的密码
127.0.0.1:6379> config get requirepass 1) "requirepass" 2) ""
可以看到,默认为空
现在设置密码
127.0.0.1:6379> config set requirepass 'qwe123' OK 127.0.0.1:6379> config get requirepass 1) "requirepass" 2) "qwe123"
连接用auth语法
127.0.0.1:6379> auth qwe123 OK
作者:ChanceySolo
出处:https://www.cnblogs.com/chancey/p/10282859.html
版权:本作品采用「ChanceySolo-非商业性使用-相同方式共享 4.0 国际」许可协议进行许可。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 零经验选手,Compose 一天开发一款小游戏!
· 一起来玩mcp_server_sqlite,让AI帮你做增删改查!!