您现在的位置是:网站首页> 编程资料编程资料

Redis安装启动及常见数据类型_Redis_

2023-05-27 454人已围观

简介 Redis安装启动及常见数据类型_Redis_

Redis 简介

Redis 是我们在互联网应用中使用最广泛的一个 NoSQL 数据库,基于 C 开发的键值对存储数据库。

Redis 这个名字是 Remote Dictionary Service 字母缩写。

很多人想到 Redis,就想到缓存。但实际上 Redis 除了缓存之外,还有许多更加丰富的使用场景。比如分布式锁,限流。

Redis 特点

  • 支持数据持久化
  • 支持多种不同的数据结构类型之间的映射
  • 支持主从模式的数据备份
  • 自带了发布订阅系统
  • 定时器、计数器

redis的安装

四种方式获取一个 Redis:

1.直接编译安装(推荐使用)

提前准备好 gcc 环境

 yum install gcc-c++

接下来下载并安装 Redis:

 wget https://download.redis.io/releases/redis-6.2.1.tar.gz tar -zxvf redis-6.2.1.tar.gz cd redis-6.2.1/ make make install

安装完成后,启动 Redis:

 redis-server redis.conf

启动成功页面如下:

2.使用Docker

Docker 安装好之后,启动 Docker ,直接运行安装命令即可,启动后返回容器运行的ID

 docker run --name taoguoguo-redis -d -p 6379:6379 redis --requirepass 123

我们先查看运行在Docker上的redis容器

 docker ps 

确保容器正在运行后,可以从宿主机上连接(前提是宿主机上存在 redis-cli),因为第一种编译安装方式我们已经在宿主机上安装了redis 所以可以直接使用宿主机的命令行工具

 #redis-cli 客户端命令 默认参数有地址 -h 127.0.0.1 端口 -p 6379 密码 -a '123' redis-cli -a 123

宿主机客户端,连接成功!

如果宿主机上没有安装 Redis,那么也可以进入到 Docker 容器种去操作 Redis:

 #1.退出当前redis exit #2.进入Redis容器 docker exec -it taoguoguo-redis redis-cli -a 123

3.也可以直接安装

CentOS

 yum install redis

Ubuntu

 apt-get install redis

Mac

 brew install redis

通过在线体验,使用Redis的相关功能 http://try.redis.io/

4.redis的后台启动

首先,修改 redis.conf 配置文件,将daemonize 守护线程启动方式开启

配置完成后,保存退出,启动 redis

 redis-server redis.conf

redis的数据类型

String

String 是 Redis 里边最最简单的一种数据结构。在 Redis 中,所以的 key 都是字符串(序列化后的字符串),但是,不同的 key 对应的 value 则具备不同的数据结构,我们所说的五种不同的数据类型,主要是指 value 的数据类型不同。

Redis 中的字符串是动态字符串,内部是可以修改的,像 Java 中的 StringBuffer,它采用分配冗余空间的方式来减少内存的频繁分配。在 Redis 内部结构中,一般实际分配的内存会大于需要的内存,当字符串小于 1M 的时候,扩容都是在现有的空间基础上加倍,扩容每次扩 1M 空间,最大 512M。

set

set 就是给一个 key 赋值的。

append

使用 append 命令时,如果 key 已经存在,则直接在对应的 value 后追加值,否则就创建新的键值对。

decr

可以实现对 value 的减 1 操作(前提是 value 是一个数字),如果 value 不是数字,会报错,如果value 不存在,则会给一个默认的值为 0,在默认值的基础上减一。

decrby

和 decr 类似,但是可以自己设置步长,该命令第二个参数就是步长。

比如把K3 的值 减10 设置每次递减的步长为10即可

get

get 用来获取一个 key 的 value。

getrange

getrange 可以用来返回 key 对应的 value 的子串,这有点类似于 Java 里边的 substring。这个命令第二个和第三个参数就是截取的起始和终止位置,其中,0表示起始字符串,-1 表示最后一个字符串,-2 表示倒数第二个字符串,以此类推...

注意:原来存在在redis中 key对应的value 不会发生改变

getset

获取并更新某一个 key。

incr

给某一个 key 的 value 自增

incrby

给某一个 key 的 value 自增,同时还可以设置步长

incrbyfloat

和 incrby 类似,但是自增的步长可以设置为浮点数。 incrby 是不可以增加浮点数的

mget 和 mset

批量获取和批量存储

ttl

查看 key 的有效期, -1 代表永远不会过期 , -2 代表已经过期

setex

在给 key 设置 value 的同时,还设置过期时间,时间到了

psetex

和 setex 类似,只不过这里的时间单位是毫秒(1000ms = 1s)。

setnx

默认情况下, set 命令会覆盖已经存在的 key,setnx 则不会。

msetnx

批量设置,如果有一个存在,整个操作会失败。

setrange

指定offset(偏移量) 覆盖一个已经存在的 key 的value

strlen

查看字符串长度

String(BIT) 相关命令

在 Redis 中,字符串都是以二进制的方式来存储的。例如 set k1 a,a 对应的 ASCII 码是 97,97 转为二进制是 01100001,BIT 相关的命令就是对二进制进行操作的。

getbit

key 对应的 value 在 offset 处的 bit 值

setbit

修改 key 对应的 value 在 offset 处的 bit 值

bitcount

统计二进制数据中 1 的个数, 采用位

bitCount应用场景举例,假设我要记录测算系统每个用户当前登录的次数,比如用户名为: taoguoguo

 #命令如下 setbit key 当前登录次数 偏移量 #第一次登录 setbit taoguoguo 1 1 #第二次登录 setbit taoguoguo 2 1 #第三次登录 setbit taoguoguo 3 1 #当前登录次数统计 bitcount taoguoguo 

List

Redis中的List实际上是一个string类型的双向链表,因此既可以做栈也可以做队列来使用。不同的是栈是先进后出,队列是先进先出。链表被广泛地用于实现Redis的各种功能,如列表键、发布与订阅、慢查询、监视器等。Redis中单个List可容纳2^32-1约40亿个元素

链表的特点:

  • 链表中的元素是有序的,可通过索引下标来获取某个元素或某个范围内的元素列表。
  • 链表中的元素是可以重复的

lpush

将所有指定的值插入到存于 key 的列表的头部。如果 key 不存在,那么在进行 push 操作前会创建一个空列表。 如果 key 对应的值不是一个 list 的话,那么会返回一个错误。

rpush

向存于 key 的列表的尾部插入所有指定的值。

lrange

返回列表指定区间内的元素,索引从0开始,-1为最后一个。

lpop

移除并返回列表的头元素。

rpop

移除并返回列表的尾元素。

lindex

返回列表中,下标为 index 的元素。

ltrim

ltrim 可以对一个列表进行修剪,类似于subList。

blpop/brpop

阻塞式的弹出,相当于 lpop 的阻塞版,如果当前List数据为空,那么在阻塞时长内如果有添加元素 会进行弹出,如果没有元素加入,命令超过时间自动停止。

另一客户端在阻塞时间加入新元素至k1链表

Set

Redis 的 Set 是 String 类型的无序集合。集合成员是唯一的,这就意味着集合中不能出现重复的数据。

Redis 中集合是通过哈希表实现的,所以添加,删除,查找的复杂度都是 O(1)。

集合中最大的成员数为 2^32 - 1 (4294967295, 每个集合可存储40多亿个成员)。

sadd

添加元素到一个 key 中

smembers

获取一个 key 下的所有元素

提示: 本文由整理自网络,如有侵权请联系本站删除!
本站声明:
1、本站所有资源均来源于互联网,不保证100%完整、不提供任何技术支持;
2、本站所发布的文章以及附件仅限用于学习和研究目的;不得将用于商业或者非法用途;否则由此产生的法律后果,本站概不负责!

-六神源码网