Redis入门(一)

1、简介:

Redis 是完全开源的,遵守 BSD 协议,是一个高性能的 key-value 数据库。

Redis 与其他 key - value 缓存产品有以下三个特点:

  • Redis支持数据的持久化,可以将内存中的数据保存在磁盘中,重启的时候可以再次加载进行使用。
  • Redis不仅仅支持简单的key-value类型的数据,同时还提供list,set,zset,hash等数据结构的存储。
  • Redis支持数据的备份,即master-slave模式的数据备份。

1.1、Redis 优势

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

1.2、Redis与其他key-value存储有什么不同?

  • Redis有着更为复杂的数据结构并且提供对他们的原子性操作,这是一个不同于其他数据库的进化路径。Redis的数据类型都是基于基本数据结构的同时对程序员透明,无需进行额外的抽象。
  • Redis运行在内存中但是可以持久化到磁盘,所以在对不同数据集进行高速读写时需要权衡内存,因为数据量不能大于硬件内存。在内存数据库方面的另一个优点是,相比在磁盘上相同的复杂的数据结构,在内存中操作起来非常简单,这样Redis可以做很多内部复杂性很强的事情。同时,在磁盘格式方面他们是紧凑的以追加的方式产生的,因为他们并不需要进行随机访问。

2、Redis安装

下载、解压、安装:

wget http://download.redis.io/releases/redis-6.0.8.tar.gz

# tar xzf redis-6.0.8.tar.gz

# mkdir /soft

# mv redis-6.0.8 /soft/

# cd /soft/redis-6.0.8

#make

然后启动,进入src目录执行如下命令:

./redis-server或者 ./redis-server redis.conf(该文件是你根据需要进行更改的redis配置文件)

然后通过命令行连接redis:redis-cli

那么怎么对远程的主机进行连接?那就需要执行如下命令进行连接了:

redis-cli -h host -p port -a password

host就是远程连接的IP,-a后面是你设置的密码,如果redis加了白名单,没有使用密码那就直接把-a去掉,有时候进入redis后也需要进行认证(加了密码认证为前提),那就执行:auth 密码。

使用二进制安装时可能会遇到如下问题:

①编译时报cc未找到命令 错误127

 

未安装Gcc需要安装Gcc:yum -y install gcc-c++

然后安装后并没有好,并报错,zmalloc.h:50:31: 致命错误:jemalloc/jemalloc.h:没有那个文件或目录.解决办法执行下列命令:

make MALLOC=libc

然后再执行make

3、redis基本知识入门:

3.1、key:

Redis 键命令用于管理 redis 的键。Redis 键命令的基本语法如下:

COMMAND KEY_NAME

set是命令 name是key,而ceshi是key的值。下列是key的基本操作命令:

序号

命令及描述

1

DEL key 该命令用于在 key 存在时删除 key。

2

DUMP key 序列化给定 key ,并返回被序列化的值。

3

EXISTS key 检查给定 key 是否存在。

4

EXPIRE key seconds 为给定 key 设置过期时间,以秒计。

5

EXPIREAT key timestamp EXPIREAT 的作用和 EXPIRE 类似,都用于为 key 设置过期时间。 不同在于 EXPIREAT 命令接受的时间参数是 UNIX 时间戳(unix timestamp)。

6

PEXPIRE key milliseconds 设置 key 的过期时间以毫秒计。

7

PEXPIREAT key milliseconds-timestamp 设置 key 过期时间的时间戳(unix timestamp) 以毫秒计

8

KEYS pattern 查找所有符合给定模式( pattern)的 key 。

9

MOVE key db 将当前数据库的 key 移动到给定的数据库 db 当中。

10

PERSIST key 移除 key 的过期时间,key 将持久保持。

11

PTTL key 以毫秒为单位返回 key 的剩余的过期时间。

12

TTL key 以秒为单位,返回给定 key 的剩余生存时间(TTL, time to live)。

13

RANDOMKEY 从当前数据库中随机返回一个 key 。

14

RENAME key newkey 修改 key 的名称

15

RENAMENX key newkey 仅当 newkey 不存在时,将 key 改名为 newkey 。

16

SCAN cursor [MATCH pattern] [COUNT count] 迭代数据库中的数据库键。

17

TYPE key 返回 key 所储存的值的类型。

3.2、Redis 字符串(String)

Redis 字符串数据类型的相关命令用于管理 redis 字符串值,基本语法如下这个和key的语法一致:

COMMAND KEY_NAME,其实就是命令+key+值,而值就是字符串,常用的redis字符串命令如下:

序号

命令及描述

1

SET key value 设置指定 key 的值

2

GET key 获取指定 key 的值。

3

GETRANGE key start end 返回 key 中字符串值的子字符

4

GETSET key value 将给定 key 的值设为 value ,并返回 key 的旧值(old value)。

5

GETBIT key offset 对 key 所储存的字符串值,获取指定偏移量上的位(bit)。

6

MGET key1 [key2..] 获取所有(一个或多个)给定 key 的值。

7

SETBIT key offset value 对 key 所储存的字符串值,设置或清除指定偏移量上的位(bit)。

8

SETEX key seconds value 将值 value 关联到 key ,并将 key 的过期时间设为 seconds (以秒为单位)。

9

SETNX key value 只有在 key 不存在时设置 key 的值。

10

SETRANGE key offset value 用 value 参数覆写给定 key 所储存的字符串值,从偏移量 offset 开始。

11

STRLEN key 返回 key 所储存的字符串值的长度。

12

MSET key value [key value ...] 同时设置一个或多个 key-value 对。

13

MSETNX key value [key value ...] 同时设置一个或多个 key-value 对,当且仅当所有给定 key 都不存在。

14

PSETEX key milliseconds value 这个命令和 SETEX 命令相似,但它以毫秒为单位设置 key 的生存时间,而不是像 SETEX 命令那样,以秒为单位。

15

INCR key 将 key 中储存的数字值增一。

16

INCRBY key increment 将 key 所储存的值加上给定的增量值(increment) 。

17

INCRBYFLOAT key increment 将 key 所储存的值加上给定的浮点增量值(increment) 。

18

DECR key 将 key 中储存的数字值减一。

19

DECRBY key decrement key 所储存的值减去给定的减量值(decrement) 。

20

APPEND key value 如果 key 已经存在并且是一个字符串, APPEND 命令将指定的 value 追加到该 key 原来值(value)的末尾。

3.3、Redis 集合(Set)

Redis 的 Set 是 String 类型的无序集合。集合成员是唯一的,这就意味着集合中不能出现重复的数据。集合对象的编码可以是 intset 或者 hashtable。Redis 中集合是通过哈希表实现的,所以添加,删除,查找的复杂度都是 O(1)。集合中最大的成员数为 232 - 1 (4294967295, 每个集合可存储40多亿个成员)。

命令:SADD key 值

使用 SADD 命令向名为 na 的集合插入的四个元素,常用的集合基本命令如下:

序号

命令及描述

1

SADD key member1 [member2] 向集合添加一个或多个成员

2

SCARD key 获取集合的成员数

3

SDIFF key1 [key2] 返回第一个集合与其他集合之间的差异。

4

SDIFFSTORE destination key1 [key2] 返回给定所有集合的差集并存储在 destination 中

5

SINTER key1 [key2] 返回给定所有集合的交集

6

SINTERSTORE destination key1 [key2] 返回给定所有集合的交集并存储在 destination 中

7

SISMEMBER key member 判断 member 元素是否是集合 key 的成员

8

SMEMBERS key 返回集合中的所有成员

9

SMOVE source destination member 将 member 元素从 source 集合移动到 destination 集合

10

SPOP key 移除并返回集合中的一个随机元素

11

SRANDMEMBER key [count] 返回集合中一个或多个随机数

12

SREM key member1 [member2] 移除集合中一个或多个成员

13

SUNION key1 [key2] 返回所有给定集合的并集

14

SUNIONSTORE destination key1 [key2] 所有给定集合的并集存储在 destination 集合中

15

SSCAN key cursor [MATCH pattern] [COUNT count] 迭代集合中的元素

3.4、Redis 列表(List)

Redis列表是简单的字符串列表,按照插入顺序排序。你可以添加一个元素到列表的头部(左边)或者尾部(右边)一个列表最多可以包含 232 - 1 个元素 (4294967295, 每个列表超过40亿个元素)。

通过LPUSH 将三个值插入了名为 cs 的列表当中。常用的列表命令如下:

序号

命令及描述

1

BLPOP key1 [key2 ] timeout 移出并获取列表的第一个元素, 如果列表没有元素会阻塞列表直到等待超时或发现可弹出元素为止。

2

BRPOP key1 [key2 ] timeout 移出并获取列表的最后一个元素, 如果列表没有元素会阻塞列表直到等待超时或发现可弹出元素为止。

3

BRPOPLPUSH source destination timeout 从列表中弹出一个值,将弹出的元素插入到另外一个列表中并返回它; 如果列表没有元素会阻塞列表直到等待超时或发现可弹出元素为止。

4

LINDEX key index 通过索引获取列表中的元素

5

LINSERT key BEFORE|AFTER pivot value 在列表的元素前或者后插入元素

6

LLEN key 获取列表长度

7

LPOP key 移出并获取列表的第一个元素

8

LPUSH key value1 [value2] 将一个或多个值插入到列表头部

9

LPUSHX key value 将一个值插入到已存在的列表头部

10

LRANGE key start stop 获取列表指定范围内的元素

11

LREM key count value 移除列表元素

12

LSET key index value 通过索引设置列表元素的值

13

LTRIM key start stop 对一个列表进行修剪(trim),就是说,让列表只保留指定区间内的元素,不在指定区间之内的元素都将被删除。

14

RPOP key 移除列表的最后一个元素,返回值为移除的元素。

15

RPOPLPUSH source destination 移除列表的最后一个元素,并将该元素添加到另一个列表并返回

16

RPUSH key value1 [value2] 在列表中添加一个或多个值

17

RPUSHX key value 为已存在的列表添加值

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值