初学Redis简介以及入门

一.Redis的介绍

1.什么是redis?

Redis(Remote Dictionary Server)是一个开源的内存数据结构存储系统。它支持多种数据结构,包括字符串、哈希表、列表、集合、有序集合等。与传统的关系型数据库相比,Redis 是一种更加快速高效的数据存储方式。

Redis 在内存中存储数据,可以提供非常快速的读写性能。同时,Redis 还支持数据持久化,可以将内存中的数据定期或实时地写入硬盘,防止数据丢失。此外,Redis 还提供了一些高级功能,如事务支持、发布/订阅机制、Lua 脚本支持等。

由于 Redis 的高性能和可扩展性,它被广泛应用于缓存、消息队列、计数器、分布式锁、实时排行榜、推荐系统等领域,成为了互联网应用开发中不可或缺的一部分。

2.redis的应用场景

以下是几个常见的Redis应用场景:

  1. 缓存:Redis最常见的用途之一是作为缓存层。将经常被访问的数据缓存到Redis中,可以大大加快数据的访问速度。通过使用Redis的数据结构和内置的缓存过期功能,可以灵活地控制缓存的失效时间,并且能够轻松地扩展缓存容量。
  2. 分布式锁:在分布式系统中,为了保证数据的一致性和并发访问的正确性,常常需要使用分布式锁。Redis提供了原子操作的特性,可以方便地实现分布式锁机制,确保在同一时间只有一个线程可以访问共享资源
  3. 计数器:Redis的原子操作使得它非常适合用作计数器。通过使用Redis的自增操作,可以实现高效地计数,并且支持并发访问。计数器可以用于统计网站的访问次数、消息队列的消费进度等场景。
  4. 消息队列:Redis的发布/订阅功能可以实现简单而高效的消息队列系统。生产者将消息发布到指定的频道,而消费者则可以订阅这些频道并接收消息。由于Redis的高性能和可靠性,它可以处理大量的消息,并且支持多个消费者同时订阅不同的频道。
  5. 数据缓存:除了作为缓存层之外,Redis还可以用作数据的持久化存储。通过将热点数据存储在Redis中,可以减轻数据库的负载,并提高系统的响应速度。此外,Redis还支持数据的持久化操作,可以将数据写入磁盘,以防止数据丢失。

3.no-sql数据库和sql数据库区别

NoSQL数据库和SQL数据库是两种不同的数据库类型,它们在数据存储、查询和管理等方面有很大的差异。

  1. 数据存储*:SQL数据库采用关系型数据模型,数据以表格的形式存储,每张表格由一组列和行组成。而NoSQL数据库则采用非关系型数据模型,数据以文档、键值对、图形或列族等形式存储*。这使得NoSQL数据库能够更加灵活地处理不规则、半结构化和非结构化数据。
  2. 查询语言:SQL数据库使用结构化查询语言(Structured Query Language)进行查询和操作,这种语言具有严格的语法和规则。而NoSQL数据库通常不提供统一的查询语言,查询和操作语言可能因不同的数据库而异。
  3. 数据一致性:SQL数据库通常采用ACID(原子性、一致性、隔离性和持久性)事务模型,确保数据的一致性和完整性。而NoSQL数据库则更倾向于BASE(基本可用性、软状态和最终一致性)模型,强调可用性和分布式系统的特点。
  4. 可扩展性:NoSQL数据库天生就是设计为可伸缩的,可以轻松地实现分布式存储和查询。SQL数据库则需要通过复制和分区等技术来实现扩展。

常见的sql数据库

  1. MySQL:MySQL是一个开源的关系型数据库管理系统,由瑞典的MySQL AB公司开发。它具有良好的性能、可伸缩性和稳定性,被广泛应用于各种规模的应用程序。MySQL支持标准的SQL语言,并且有广泛的社区支持和活跃的开发者社区。
  2. Oracle Database:Oracle Database是由Oracle公司开发的一款商业级关系型数据库管理系统,被广泛应用于大型企业级应用和复杂的数据处理场景。Oracle Database具有强大的功能和安全性,以及高度可靠的性能和扩展性。
  3. SQL Server:SQL Server是由微软公司开发的一款关系型数据库管理系统。它在Windows操作系统上广泛使用,并提供了丰富的工具和功能,包括高可用性、分布式处理和商业智能等方面的支持。

常见no-sql数据库

  1. .Redis是一个开源的高性能内存数据存储系统,它可以用作缓存、消息队列等多种用途。Redis支持多种数据结构,如字符串、哈希表、列表、集合和有序集合,可以进行原子性操作和事务。Redis的特点是读写速度快、可靠性高、支持分布式、可扩展性好等,适用于需要快速读写和处理大量数据的场景,如高并发、实时性强的Web应用程序。
  2. .Ehcache是一个Java内存缓存框架,提供了基于内存的缓存和磁盘缓存,适用于中小型应用系统。Ehcache可以通过配置文件来设置缓存策略和过期时间,并且提供了多种缓存策略和缓存算法,可以根据不同的业务需求进行优化和调整。Ehcache的特点是易于使用、轻量级、扩展性好等,适用于对数据实时性要求不高,但需要频繁访问的场景。
  3. MongoDB是一个高性能、可扩展、面向文档的NoSQL数据库,使用JSON格式存储数据,适用于大规模数据存储和分析。MongoDB支持复杂的查询语句和索引,具有高可用性、强一致性、分布式等特点。它适合用于数据量大、读写并发高、需要进行复杂数据分析和处理的场景,如互联网应用、物联网、大数据等。

二.redis的安装

1.linux操作系统的安装

img

开始解压 tar -zxvf redis-5.0.0.tar.gz

img

安装gcc yum install gcc

img

安装 redis make

img

img

img

img

修改redis.conf文件

cp redis.conf redis_bak.conf

将daemonize no 改为 daemonize yes

img

启动radis ./src/redis-server redis.conf

imgimg

杀死进程

img

打开本地解析ip

img

img

设置防火墙开放 6379 端口

firewall-cmd --zone=public --add-port=6379/tcp --permanent

img

再次重新启动

img

再次登录是要携带 ip 端口号 以及 密码

./src/redis-cli -h 127.0.0.1 -p 6379 -a 123456

img

img

然后在 RedisDesktopManager 测试即可

img

2.Windows版本的安装

img

img

在 RedisDesktopManager 测试即可

img

三.语法

img

Redis字符串(String)

# set key //保存

set name zs

set age 12

set sex nan

# get key //获取

get name

# type key //查看类型

type age //string 说明type返回的是键值对存储类型,而不是值存储类型

# keys *或keys key //查看所有或者指定的key

keys *

# SETEX KEY_NAME TIMEOUT VALUE // 给键值对设置过期时间

setex zs 60 live

# ttl key // 获取键值对剩余的存活时间

ttl zs

Redis哈希(Hash)

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

# hset key field1 value1 [field2 value2] #同时将多个field-value设置到哈希表key中

hset user name zs age 12 sex nv

# hget key field #获取指定的字段值

hget user age

# hdel key field #删除指定的字段值

hdel user age

# hgetall key #查询指定key的所有字段

hgetall user

# hexists key field #查询指定key中的字段是否存在

hexists user name

# hlen key #获取指定key中的长度

hlen user

Redis列表(List)

Redis列表是简单的字符串列表,按照插入顺序排序。你可以添加一个元素到列表的头部(左边)或者尾部(右边)

# lpush key value1 value2 value3 #将一个或多个值插入到列表头部

lpush en a b c d e f g

# llen key #获取列表的长度

llen en

# lindex key index #根据索引获取列表中的元素

lindex en 1 #返回f,说明下标从0开始,同时先进后出

# lrange key start sop #查看指定范围内的元素

lrange en 1 3 #返回fed,说明下标从0开始,同时先进后出

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

# sadd key value1 [value2] #向集合添加一个或多个元素

sadd hobby lanqiu zuqiu bingpangqiu zhuoqiu

# scard key #获取集合中的元素数量

scard hobby

# exists key #是否存在

exists hobby

本文由博客群发一文多发等运营工具平台 OpenWrite 发布