首页 > 数据库 >Redis入门

Redis入门

时间:2022-11-16 22:11:31浏览次数:65  
标签:入门 Redis 元素 redis value key 集合

一、Redis简介安装

1、Redis简介

REmote DIctionary Server(Redis) 是一个由 Salvatore Sanfilippo 写的 key-value 存储系统,是跨平台的非关系型数据库。
Redis 是一个开源的使用 ANSI C 语言编写、遵守 BSD 协议、支持网络、可基于内存、分布式、可选持久性的键值对(Key-Value)存储数据库,并提供多种语言的 API。
Redis 通常被称为数据结构服务器,因为值(value)可以是字符串(String)、哈希(Hash)、列表(list)、集合(sets)和有序集合(sorted sets)等类型。

Redis优点:

  • 性能极高 – Redis能读的速度是110000次/s,写的速度是81000次/s 。
  • 丰富的数据类型 – Redis支持二进制案例的 Strings, Lists, Hashes, Sets 及Ordered Sets 数据类型操作。
  • 原子 – Redis的所有操作都是原子性的,意思就是要么成功执行要么失败完全不执行。单个操作是原子性的。多个操作也支持事务,即原子性,通过MULTI和EXEC指令包起来。
  • 丰富的特性 – Redis还支持 publish/subscribe, 通知, key 过期等等特性。

2、Redis安装

以本地虚拟机CentOS系统为例

1、下载

Redis下载
image

2、上传解压

下载好文件后一般存放在/opt目录下
使用tar zxvf redis-6.2.7.tar.gz命令解压
image

3、安装

3.1安装依赖

编译时需要 gcc 环境

yum -y install gcc
3.2进入redis目录编译
cd redis

#编译
make && make install

等待编译完毕即可

4、启动redis

4.1 修改基础配置
  • 复制配置文件
    将redis目录中的redis.config文件复制一份到 /etc
cd redis
cp redis.config /etc
  • 修改内容
    修改下面几项内容
#守护进程修改成yes即可后台运行
daemonize yes
#密码,设置后访问redis必须需要密码,特别是阿里云服务器,不然会被挖矿
requirepass 123456 将配置的#去掉就行
#将默认的redis.conf文件127.0.0.1改了,有两种
bind 0.0.0.0 //代表任意ip都能访问
bind 127.0.0.1::1
4.2 测试
#进入redis安装目录
cd /usr/local/bin
#执行启动服务命令
redis-server /etc/redis.conf
#连接服务器
redis-cli -p 6379
#设置密码的话输入
#auth 123456
#测试
ping
#停止
shutdown

三、Redis常用数据类型

Redis支持的五种常用数据类型:string(字符串),hash(哈希),list(列表),set(集合)及zset(sorted set:有序集合)。

1、String字符串

string 是 redis 最基本的类型,一个 key 对应一个 value
String 类型是二进制安全的。意味着 Redis 的 string 可以包含任何数据。比如 jpg 图片或者序列化的对象。
string 类型是 Redis 最基本的数据类型,string 类型的值最大能存储 512MB。

  • 常用命令:
    • set <key><value> 添加键值对
    • get <key> 查询对应键值
    • append <key><value> 将给定的 value 追加到原值的末尾
    • strlen <key> 获得值的长度
    • setnx <key><value> 只有在 key 不存在时设置 key 的值
    • incr <key> 将 key 中储存的数字值增 1,只能对数字值操作,如果为空,新增值为 1
    • decr <key> 将 key 中储存的数字值减 1
    • incrby / decrby <key><步长> 将 key 中储存的数字值增减。自定义步长。
      image

2、List列表

单键多值
List 列表是简单的字符串列表,按照插入顺序排序。你可以添加一个元素到列表的头部(左边)或者尾部(右边)。
它的底层实际是个双向链表,对两端的操作性能很高,通过索引下标的操作中间的节点性能会较差。

  • 常用命令:
    • lpush/rpush <key><value1><value2><value3> 从左边/右边插入一个多个值。
    • lpop/rpop <key> 从左边/右边吐出一个值。取完了list就没了。
    • rpoplpush <key1><key2>从<key1> 列表右边吐出一个值,插到 key2 列表左边。
    • lrange <key><start><stop> 按照索引下标获得元素(从左到右 0-1 表示获取所有)
    • lindex <key><index> 按照索引下标获得元素(从左到右)
    • llen <key> 获得列表长度
    • linsert <key> before <value><newvalue> 在value的后面插入newvalue的值
    • lrem <key><n><value> 从左边删除 n 个 value(从左到右)
    • lset<key><index><value> 将列表 key 下标为 index 的值替换成 value

3、Set无序集合

Redis set 对外提供的功能与 list 类似是一个列表的功能,特殊之处在于 set 是可以自动排重的。当你需要存储一个列表数据,又不希望出现重复数据时,set 是一个很好的选择,并且 set 提供了判断某个成员是否在一个 set 集合内的重要接口,这个也是 list所不能提供的。
Redis 的 Set 是 string 类型的无序集合。它底层其实是一个 value 为 null 的 hash 表,所以添加,删除,查找的复杂度都是 O(1)

  • 常用命令:
    • sadd <key><value1><value2> 将一个或多个 member 元素加入到集合 key 中,已经存在的 member 元素将被忽略
    • smembers <key> 取出该集合的所有值。
    • sismember <key><value>判断集合 key 是否为含有该 value值,有1,没有0。
    • scard <key> 返回该集合的元素个数。
    • srem <key><value1><value2> 删除集合中的某个元素。
    • spop <key> 随机从该集合中吐出一个值,从集合中删除
    • srandmember <key><num>随机从该集合中取出 n 个值。不会从集合中删除 。
    • smove <source><destination><value> 把集合中一个值从一个集合移动到另一个集合
    • sinter <key1><key2> 返回两个集合的交集元素。
    • sunion <key1><key2> 返回两个集合的并集元素。
    • sdiff <key1><key2> 返回两个集合的差集元素(key1 中的,不包含 key2 中的)

4、ZSet有序集合

Redis 有序集合 zset 与普通集合 set 非常相似,是一个没有重复元素的字符串集合。
不同之处是有序集合的每个成员都关联了一个评分(score),这个评分(score)被用来按照从最低分到最高分的方式排序集合中的成员。集合的成员是唯一的,但是评分可以是重复了

  • 常用命令:
    • zadd <key><score1><value1><score2><value2> 将一个或多个 member 元素及其 score 值加入到有序集 key 当中
    • zrange <key><start><stop> [WITHSCORES] 返回有序集 key 中,下标在start 至 stop之间的元素,带 WITHSCORES,可以让分数一起和值返回到结果集。
    • zrangebyscore key minmax [withscores] [limit offset count]返回有序集 key 中,所有 score 值介于 min 和 max 之间(包括等于 min 或 max )的成员。有序集成员按 score 值递增(从小到大)次序排列。
    • zrevrangebyscore key maxmin [withscores] [limit offset count] 同上,改为从大到小排列。
    • zincrby <key><increment><value> 为元素的 score 加上增量
    • zrem <key><value> 删除该集合下,指定值的元素
    • zcount <key><min><max> 统计该集合,分数区间内的元素个数
    • zrank <key><value> 返回该值在集合中的排名,从 0 开始。
      image

5、Hash哈希

Redis hash 是一个键值对集合。
Redis hash 是一个 string 类型的 field 和 value 的映射表,hash 特别适合用于存储对象。类似 Java 里面的 Map<String,Object>

  • 常用命令:
    • hset <key><field><value>给<key> 集合中的field 键赋值value
    • hget <key1><field>从 key1 集合 field 取出 value
    • hmset <key1><field1><value1><field2><value2> 批量设置 hash 的值
    • hexists<key1><field> 查看哈希表 key 中,给定域 field 是否存在。
    • hkeys <key> 列出该 hash 集合的所有 field
    • hvals <key> 列出该 hash 集合的所有 value
    • hincrby <key><field><increment> 为哈希表 key 中的域 field 的值加上增量1 -1
    • hsetnx <key><field><value> 将哈希表 key 中的域 field 的值设置为 value ,当且仅当域中 field 不存在。

四、Redis发布订阅

Redis 发布订阅 (pub/sub) 是一种消息通信模式:发送者 (pub) 发送消息,订阅者 (sub) 接收消息。
Redis 客户端可以订阅任意数量的频道。

  • 下图展示了频道 channel1 , 以及订阅这个频道的三个客户端 —— client2 、 client5 和 client1 之间的关系:
    image
  • 当有新消息通过 PUBLISH 命令发送给频道 channel1 时, 这个消息就会被发送给订阅它的三个客户端:
    image

五、Redis事务

六、Redis持久化

七、Redis主从复制

标签:入门,Redis,元素,redis,value,key,集合
From: https://www.cnblogs.com/Snowclod/p/16897701.html

相关文章

  • 用Python入门知识点,打印自己的宠物小精灵,圆你的驯兽师梦
    神奇宝贝是我们的回忆,那时候做梦都想拥有一个皮卡丘,或者喷火龙也行!今天,或许是离梦想最近的一天。我将用python入门需要掌握的知识点,教你制作一个宠物小精灵,其实很简单。......
  • Vue 入门。
    一、Vue是一套渐进式的前端框架,简化了JavaScript中的DOM操作,Vue基于MVVM (Model-View_ViewModel)思想,实现数据的双向绑定。二、Vue的简单使用。1、引入Vue.js文件。<s......
  • Nginx快速入门
    参考文章:https://www.kuangstudy.com/bbs/1353634800149213186公司产品出现瓶颈?我们公司项目刚刚上线的时候,并发量小,用户使用的少,所以在低并发的情况下,一个jar包启动应用......
  • Logstash 入门实战(4)--filter plugin 介绍
    本文主要介绍Logstash的一些常用过滤插件;相关的环境及软件信息如下:CentOS 7.9、Logstash8.2.2。1、grok过滤插件grok是一种将行与正则表达式匹配,将行的特定部分映射到......
  • Redis安装说明
    Redis安装说明大多数企业都是基于Linux服务器来部署项目,而且Redis官方也没有提供Windows版本的安装包。因此课程中我们会基于Linux系统来安装Redis.此处选择的Linux版本......
  • redis
    redis基础1.初识redisRedis是一种键值型的NoSql数据库,这里有两个关键字:键值型NoSql其中键值型,是指Redis中存储的数据都是以key、value对的形式存储,而value的形......
  • ArcGIS Python API可视化及分析系列教程(一):入门与简介(2)安装与配置
    前文再续,本节主要讲安装……前置要求:1、有Python软件安装的经验。2、离线安装的话,需要有ArcGISJavascriptAPI部署经验和能力。如果这两个都从来没有弄过的话,就用在线的......
  • redis 数据类型
    目录redis数据类型字符串string添加一个key获取一个key的内容删除一个key批量设置多个key,value批量根据key获取多个value追加数据数值递增数值递减获取字符串key的长度判......
  • 2022-01-27 redis集群技术调研
    目录​​摘要:​​​​redis集群方案选型:​​​​redis集群前端代理proxy技术选型:​​​​redis集群的扩容/缩容:​​​​rediscluster集群的节点高可用​​​​redis节......
  • Bootstrap概述、快速入门
    Bootstrap概述概念:一个前端开发的框架,Bootstrap,来自Twitter,是目前很受欢迎的前端框架。Bootstrap是基于HTML,CSS,JavaScript的,它简洁灵活,使得Web开发更加快捷框架:一个......