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 下的所有元素

srem

移除指定的元素

sismemeber

返回某一个成员是否在集合中, 0 代表不存在, 1表示存在

scard

返回集合的数量

srandmember

随机返回一个元素

spop

随机返回并且出栈一个元素

smove

把一个元素从一个集合移到另一个集合中去

sdiff

返回两个集合的差集,不同集合的顺序,差集结果是不一样的

sinter

返回两个集合的交集

sdiffstore

这个类似于 sdiff ,不同的是,计算出来的结果会保存在一个新的集合中

sinterstore

类似于 sinter,只是将计算出来的交集保存到一个新的集合中

sunion

求并集

sunionstore

求并集并且将结果保存到新的集合中

Hash

Redis hash 是一个 string 类型的 field(字段) 和 value(值) 的映射表,hash 特别适合用于存储对象。

Redis 中每个 hash 可以存储 2^32 - 1 键值对(40多亿)。

hset

添加值

hget

获取值

hmset

批量设置

hmget

批量获取

hdel

删除一个指定的 field

hsetnx

默认情况下,如果 key 和 field 相同,会覆盖掉已有的 value,hsetnx 则不会

hvals

获取所有的 value

hkeys

获取所有的 key

hgetall

同时获取所有的 key 和 value

hexists

返回 field 是否存在, 0 不存在, 1存在

hincrby

给指定的 value 自增

hincrbyfloat

可以自增一个浮点数

hlen

返回 某一个 key 中 value 的数量

hstrlen

返回某一个 key 中的某一个 field 的字符串长度

ZSet

Redis 有序集合和集合一样也是 string 类型元素的集合,且不允许重复的成员。

不同的是每个元素都会关联一个 double 类型的分数。redis 正是通过分数来为集合中的成员进行从小到大的排序。

有序集合的成员是唯一的,但分数(score)却可以重复。

集合是通过哈希表实现的,所以添加,删除,查找的复杂度都是 O(1)。 集合中最大的成员数为 232 - 1 (4294967295, 每个集合可存储40多亿个成员)。

zadd

将指定的元素添加到有序集合中

zscore

返回 member 的 score 值

zrange

返回集合中的一组元素,可以加上 withscores 连同分数一起返回

zrevrange

返回一组元素,但是是倒序

zcard

返回元素个数

zcount

返回 score 在某一个区间内的元素,默认是闭区间,如果要开区间 在 score值 前面加上 (

zrangebyscore

按照 score 的范围返回元素

zrank

返回元素的排名(从小到大)

zrevrank

返回元素排名(从大到小)

zincrby

score自增

zinterstore

给两个集合求交集,给交集求和

zrem

弹出一个元素

zlexcount

计算有序集合中成员数量

zrangebylex

返回指定区间内的成员

Key相关操作

del

删除一个 key/value

dump

序列化给定的 key

exists

判断一个 key 是否存在

ttl

查看一个 key 的有效期 , -1 永不过期 , -2 已经过期

expire

给一个 key 设置有效期,如果 key 在过期之前被重新 set 了,则过期时间会失效

persist

移除一个 key 的过期时间

keys *

查看所有的 key

pttl

和 ttl 一样,只不过这里返回的是毫秒

数据类型总结四种数据类型(list/set/zset/hash),在第一次使用时,如果容器不存在,就自动创建一个四种数据类型(list/set/zset/hash),如果里边没有元素了,那么立即删除容器,释放内存。

到此这篇关于Redis安装启动及常见数据类型的文章就介绍到这了,更多相关Redis安装启动内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • Redis教程(三):List数据类型

    一.概述: 在Redis中,List类型是按照插入顺序排序的字符串链表.和数据结构中的普通链表一样,我们可以在其头部(left)和尾部(right)添加新的元素.在插入时,如果该键并不存在,Redis将为该键创建一个新的链表.与此相反,如果链表中所有的元素均被移除,那么该键也将会被从数据库中删除.List中可以包含的最大元素数量是4294967295.       从元素插入和删除的效率视角来看,如果我们是在链表的两头插入或删除元素,这将会是非常高效的操作,即使链表中已经存储了百万条记录,该操作

  • Django中redis的使用方法(包括安装、配置、启动)

    一.安装redis: 1.下载: wget http://download.redis.io/releases/redis-3.2.8.tar.gz 2.解压 tar -zxvf redis-3.2.8.tar.gz 3.复制,放到/usr/local目录下 sudo mv ./redis-3.2.8 /usr/local/redis 4.进入到redis目录下 cd /usr/local/redis/ 5.生成 sudo make 6.测试,时间会比较长 sudo make test 7.安装

  • Redis教程(六):Sorted-Sets数据类型

    一.概述: Sorted-Sets和Sets类型极为相似,它们都是字符串的集合,都不允许重复的成员出现在一个Set中.它们之间的主要差别是Sorted-Sets中的每一个成员都会有一个分数(score)与之关联,Redis正是通过分数来为集合中的成员进行从小到大的排序.然而需要额外指出的是,尽管Sorted-Sets中的成员必须是唯一的,但是分数(score)却是可以重复的.     在Sorted-Set中添加.删除或更新一个成员都是非常快速的操作,其时间复杂度为集合中成员数量的对数.由于So

  • CentOS系统下Redis安装和自启动配置的步骤

    一. 安装Redis Redis的安装其实相当简单,推荐的方式是下载redis的源码,并在本机编译后安装. 首次进入主文件夹的下载目录下,执行wget下载源码 [zhxilin@localhost ~]$ cd 下载 [zhxilin@localhost 下载]$ wget http://download.redis.io/redis-stable.tar.gz 接下来解压之后,移动到/usr/redis目录下 [zhxilin@localhost 下载]$ tar -zxvf redis-st

  • Redis教程(四):Hashes数据类型

    一.概述: 我们可以将Redis中的Hashes类型看成具有String Key和String Value的map容器.所以该类型非常适合于存储值对象的信息.如Username.Password和Age等.如果Hash中包含很少的字段,那么该类型的数据也将仅占用很少的磁盘空间.每一个Hash可以存储4294967295个键值对. 二.相关命令列表: 命令原型 时间复杂度 命令描述 返回值 HSET key field value O(1) 为指定的Key设定Field/Value对,如果Key不

  • 详解linux下redis安装、启动与停止,redis做成服务

    如果的Linux可以链接网络,那么可以直接联网下载.直接输入代码: wget http://Redis.googlecode.com/files/Redis-3.0.2.tar.gz 但是不建议这么做,因为google再中国的服务好像被封了,可能会链接不上.所以我们直接去其他地方下载,然后上传到Linux服务上.这里我下载了redis-3.0.2.tar.gz 版本.然后使用tar -zxvf redis_3.0.2.tar.gz 我们会看到在该目录下多了一个文件,redis-3.0.2 , 我

  • mac下redis安装、设置、启动停止方法详解

    需要下载release版本,下载地址: http://download.redis.io/releases/ 我这里下载的是: http://download.redis.io/releases/redis-3.2.5.tar.gz 解压到/usr/local/redis目录中,然后依次执行以下命令: cd /usr/local/redis sudo make test sudo make install 启动redis-server redis-server 如上图,redis-server启

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

    Redis 简介 Redis 是我们在互联网应用中使用最广泛的一个 NoSQL 数据库,基于 C 开发的键值对存储数据库. Redis 这个名字是 Remote Dictionary Service 字母缩写. 很多人想到 Redis,就想到缓存.但实际上 Redis 除了缓存之外,还有许多更加丰富的使用场景.比如分布式锁,限流. Redis 特点 支持数据持久化 支持多种不同的数据结构类型之间的映射 支持主从模式的数据备份 自带了发布订阅系统 定时器.计数器 redis的安装 四种方式获取一个

  • Redis安装及基本数据类型

    本文讲述了Redis安装及基本数据类型,小编觉得挺不错的,感兴趣的小伙伴们可以参考一下,具体如下 安装1.阿里云CentOS 1.进入到centos系统,输入wget ,下载好目前最新版的Redis,下载过程如下图. 2.对刚才的下载文件解压,进入到解压后的目录下. 3.输入make,进行编译. 4.进入src目录中,将其中的redis-server,redis-benchmark,redis-cli复制到自己新建的一个目录中. 5.设置环境变量. 复制代码 代码如下: vi /etc/prof

  • 5分钟教你docker安装启动redis全教程(全新方式)

    什么是redis 根据百度百科介绍,Redis(Remote Dictionary Server ),即远程字典服务,是一个开源的使用ANSI C语言编写.支持网络.可基于内存亦可持久化的日志型.是一个高性能(NOSQL)Key-Value数据库,并提供多种语言的API,redis也是完全开源免费的,遵守BSD协议. 什么又是NOSQL NOSQL,泛指非关系型的数据库,提到非关系型的数据库,我们就来简单讲讲关系型数据库,关系型数据库,大家都知道的oracle,mysql,postgre等都是关

  • Redis安装配置与常用命令

    Redis简介 Redis是一个开源(BSD许可),内存存储的数据结构服务器,可用作数据库,高速缓存和消息队列代理.  它支持字符串.哈希表.列表.集合.有序集合,位图,hyperloglogs等数据类型.  内置复制.Lua脚本.LRU收回.事务以及不同级别磁盘持久化功能,同时通过Redis Sentinel提供高可用,通过Redis Cluster提供自动分区.    简言之,Redis是一种面向"键/值"对数据类型的内存数据库,可以满足我们对海量数据的快速读写需求.    Red

  • redis常用命令、常见错误、配置技巧等分享

    1. redis查看当前所有的key 复制代码 代码如下: KEYS * 2. 查看当前redis的配置信息 复制代码 代码如下: CONFIG GET * 3. MISCONF Redis is configured to save RDB snapshots, but is currently not able to persist on disk. Commands that may modify the data set are disabled. Please check Redis

  • Linux下Redis安装教程详解

    一.安装环境 Redis是用C语言开发的一个开源的高性能键值对(key-value)数据库.它通过提供多种键值数据类型来适应不同场景下的存储需求,建议在Linux上运行,本教程使用Centos6.5作为安装环境,使用的redis版本为3.2.10.Redis官方网址 安装Redis需要将下载的源码进行编译,编译依赖gc++,如果没有gc++环境需要安装gcc,执行命令:yum install gcc-c++ 二.安装 解压源码,将redis安装包解压,执行命令:tar -zxvf redis-3

  • Linux下Redis安装使用教程

    一.Redis介绍 Redis是当前比较热门的NOSQL系统之一,它是一个key-value存储系统.和Memcache类似,但很大程度补偿了Memcache的不足,它支持存储的value类型相对更多,包括string.list.set.zset和hash.这些数据类型都支持push/pop.add/remove及取交集并集和差集及更丰富的操作.在此基础上,Redis支持各种不同方式的排序. 二.Redis的安装 下面介绍在Linux环境下,Redis的安装与部署 1.首先上官网下载Redis压

  • Windows下redis下载、redis安装及使用教程

    redis 简介 简单来说 redis 就是一个数据库,不过与传统数据库不同的是 redis 的数据是存在内存中的,所以读写速度非常快,因此 redis 被广泛应用于缓存方向.另外,redis 也经常用来做分布式锁.redis 提供了多种数据类型来支持不同的业务场景.除此之外,redis 支持事务 .持久化.LUA脚本.LRU驱动事件.多种集群方案. Redis 下载安装 现在gihub下 https://github.com/MicrosoftArchive/redis/releases 基本

随机推荐