Redis

Redis入门

  1. 什么是Redis
    Redis 是一个开源(BSD许可)的,内存中的数据结构存储系统,其可以用作数据库、缓存和中间件。它支持多种类型的数据结构,如 字符串(strings)散列(hashes)列表(lists)集合(sets)有序集合(sorted sets) bitmapshyperloglogs地理空间(geospatial) 等十大数据结构。
    官网:redis.io
    中文网:http://www.redis.cn/

  2. Why Redis?
    (1)redis支持数据持久化,可以把内存中等数据保存在磁盘上。
    (2)redis支持多种的数据结构
    (3)redis支持数据备份

  3. Redis的优势
    (1)redis性能极高,Redis能读的速度是110000次/s,写的速度是81000次/s 。
    (2)丰富的数据类型 – Redis支持二进制案例的 Strings, Lists, Hashes, Sets 及 Ordered Sets 数据类型操作。
    (3)redisd的操作是原子性的,要不成功执行,要不就失败。
    (4)具有丰富等特性,例如可以设置key过期等。

  4. Redis的基本使用
    (1)Redis 有16个数据库(0~15),默认使用第0个,用select可以切换数据库
    select 0-15
    (2)查看数据库大小—dbsize,dbsize返回当前数据库中有多少个key
    在这里插入图片描述
    (3)查看所有的key(当前库)—**keys ***
    在这里插入图片描述
    (4) 清除当前库和清除所有等库–flushdb && flushall
    (5)判断key是否存在, exists key
    (6)移除key
    move key 1 // 1表示当前数据库
    del key // 删除当前数据库的key(可以多个)
    (7) 设置key的过期时间
    expire key 时间 // 单位时间为s
    ttl key // 查看剩余存活时间
    (8)查看当前key的类型 type key
    (9)字符串追加
    在这里插入图片描述
    (10)获取字符串长度
    strlen key
    (11)字符串i++操作(可用于阅读量实现)(String)
    在这里插入图片描述
    减法为:decr key
    incrby key 步长
    decrby key 步长
    (12)字符串替换----setrange key index replaceString

127.0.0.1:6379[1]> set k2 handsomebo
OK
127.0.0.1:6379[1]> setrange k2 1 hand
(integer) 10
127.0.0.1:6379[1]> get k2
"hhandomebo"

(13) 设置过期时间

127.0.0.1:6379[1]> setex k3 10 value3
OK
127.0.0.1:6379[1]> get k3
"value3"
127.0.0.1:6379[1]> ttl k3
(integer) 2
127.0.0.1:6379[1]> 

(14)如果不存在则创建

127.0.0.1:6379[1]> set k3 v3
OK
127.0.0.1:6379[1]> setnx k3 v3
(integer) 0
127.0.0.1:6379[1]> del k3
(integer) 1
127.0.0.1:6379[1]> setnx k3 v3
(integer) 1

(15) 批量设置、批量获取(原子性操作) (String)

127.0.0.1:6379[1]> mset k1 v1 k2 v2 k3 v3 k4 v4 k5 v5 k6 v6 k7 v7
OK
127.0.0.1:6379[1]> mget k1 k2 k3 k4 k5 k6 k7
1) "v1"
2) "v2"
3) "v3"
4) "v4"
5) "v5"
6) "v6"
7) "v7"

(16) getset key value 先get再set,如果不存在,先返回nil,再设置值,如果存在,就返回原值,再设置新值

127.0.0.1:6379[1]> getset k10 vvvvvvvvvvvvvvv
(nil)
127.0.0.1:6379[1]> get k10
"vvvvvvvvvvvvvvv"
127.0.0.1:6379[1]> getset k10 mmmmmmmmmmmmmmmm
"vvvvvvvvvvvvvvv"
127.0.0.1:6379[1]> get k10
"mmmmmmmmmmmmmmmm"

(17) 重命名key

127.0.0.1:6379[1]> rename k10 k1010
OK
127.0.0.1:6379[1]> get k10
(nil)
127.0.0.1:6379[1]> get k1010
"mmmmmmmmmmmmmmmm"

(18)手动持久化操作
save:save指令会阻塞主进程,直到保存完为止。在阻塞期间,服务端不能响应客户端等各种请求。
bgsave:该指令会fork一个进程,用于调用rdbSave,子进程用于去保存数据,主进程不会被阻塞,可以一直响应客户端请求。

  1. String类型
  2. List类型
    (1)lpush
127.0.0.1:6379> lpush k1 1
(integer) 1
127.0.0.1:6379> lpush k1 2
(integer) 2
127.0.0.1:6379> lpush k1 3
(integer) 3
127.0.0.1:6379> lpush k1 5
(integer) 4
127.0.0.1:6379> lrange k1 0 -1
1) "5"
2) "3"
3) "2"
4) "1"

(2)rpush

127.0.0.1:6379> rpush k2 1
(integer) 1
127.0.0.1:6379> rpush k2 2
(integer) 2
127.0.0.1:6379> rpush k2 3
(integer) 3
127.0.0.1:6379> rpush k2 4
(integer) 4
127.0.0.1:6379> rpush k2 5
(integer) 5
127.0.0.1:6379> lrange k2 0 -1
1) "1"
2) "2"
3) "3"
4) "4"
5) "5"

(3)从头部/尾部移除数据(lpop/rpop)

127.0.0.1:6379> lrange k1 0 -1
1) "5"
2) "3"
3) "2"
4) "1"
127.0.0.1:6379> lrange k2 0 -1
1) "1"
2) "2"
3) "3"
4) "4"
5) "5"
127.0.0.1:6379> lpop k1 1
1) "5"
127.0.0.1:6379> lrange k1 0 -1
1) "3"
2) "2"
3) "1"
127.0.0.1:6379> lpop k2 1
1) "1"
127.0.0.1:6379> lrange k2 0 -1
1) "2"
2) "3"
3) "4"
4) "5"
127.0.0.1:6379> rpop k1 1
1) "1"
127.0.0.1:6379> lrange k1 0 -1
1) "3"
2) "2"
127.0.0.1:6379> rpop k2 1
1) "5"
127.0.0.1:6379> lrange k2 0 -1
1) "2"
2) "3"
3) "4"

(4)获取长度(llen)

127.0.0.1:6379> lrange k2 0 -1
1) "2"
2) "3"
3) "4"
127.0.0.1:6379> llen k2
(integer) 3

(5)获取指定索引的元素

127.0.0.1:6379> lrange k2 0 -1
1) "2"
2) "3"
3) "4"
127.0.0.1:6379> llen k2
(integer) 3
127.0.0.1:6379> lindex k2 1
"3"

(6)删除元素
在删除的时候需要指定删除元素等个数,以及要删除等元素内容,返回的是已经删除等元素个数

127.0.0.1:6379> rpush k3 one three three two one
(integer) 5
127.0.0.1:6379> lrem k3 1 one
(integer) 1
127.0.0.1:6379> lrange k3 0 -1
1) "three"
2) "three"
3) "two"
4) "one"
127.0.0.1:6379> lrem k3 2 one
(integer) 1
127.0.0.1:6379> lrange k3 0 -1
1) "three"
2) "three"
3) "two"
127.0.0.1:6379> lrem k3 2 one1
(integer) 0

(7)列表修剪:就是截取部分元素来充当新等字串

127.0.0.1:6379> rpush k4 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
(integer) 16
127.0.0.1:6379> lrange k4 0 -1
 1) "1"
 2) "2"
 3) "3"
 4) "4"
 5) "5"
 6) "6"
 7) "7"
 8) "8"
 9) "9"
10) "10"
11) "11"
12) "12"
13) "13"
14) "14"
15) "15"
16) "16"
127.0.0.1:6379> ltrim k4 3 8
OK
127.0.0.1:6379> lrange k4 0 -1
1) "4"
2) "5"
3) "6"
4) "7"
5) "8"
6) "9"

(8)修改指定元素的值:lset

127.0.0.1:6379> rpush k5 1 2 3 4 5 6 7
(integer) 7
127.0.0.1:6379> lrange k5 0 -1
1) "1"
2) "2"
3) "3"
4) "4"
5) "5"
6) "6"
7) "7"
127.0.0.1:6379> lset k5 0 111111
OK
127.0.0.1:6379> lrange k5 0 -1
1) "111111"
2) "2"
3) "3"
4) "4"
5) "5"
6) "6"
7) "7"

但是,lset在使用的时候需要保证key是存在的,不然会报错。

127.0.0.1:6379> lset k6 0 -1
(error) ERR no such key

(9) 插入指定的值–linsert
linsert key before|after pivot(那个单词后) value //在pivot之前/之后插入value

127.0.0.1:6379> linsert k5 before 4 1000
(integer) 8
127.0.0.1:6379> lrange k5 0 -1
1) "111111"
2) "2"
3) "3"
4) "1000"
5) "4"
6) "5"
7) "6"
8) "7"

(10)rpoplpush 用于将源列表中的最后一个元素插入到目标列表中

127.0.0.1:6379> lrange k5 0 -1
1) "111111"
2) "2"
3) "3"
4) "1000"
5) "4"
6) "5"
7) "6"
8) "7"
127.0.0.1:6379> rpoplpush k5 k6
"7"
127.0.0.1:6379> rpoplpush k5 k6
"6"
127.0.0.1:6379> lrange k5 0 -1
1) "111111"
2) "2"
3) "3"
4) "1000"
5) "4"
6) "5"
127.0.0.1:6379> lrange k6 0 -1
1) "6"
2) "7"
127.0.0.1:6379> 
  1. Set
  2. Hash
  3. Zset
<think>好的,用户想要访问Redis的官方网站。首先,我需要确认官方网站的正确网址。通常,官方网站的域名应该是redis.io或者redis.com。根据已有的知识,Redis的官方网站是redis.io,而redis.com可能是商业版或企业版的网站。因此,用户可能需要访问redis.io来获取开源版本的信息和文档。 接下来,我需要验证这个信息是否正确。虽然我的知识截止到2023年10月,但Redis官网应该没有太大变化。不过,为了确保准确,我需要回忆是否有相关的更新或变动。根据之前的资料,redis.io确实是Redis的官方站点,提供下载、文档和社区支持等内容。 用户可能在寻找下载Redis、查阅文档或者了解最新特性。因此,除了提供网址,最好简要介绍官网上的主要资源,比如文档、客户端库、社区论坛等,这样用户能快速找到所需的信息。同时,提醒用户注意区分redis.io和redis.com的不同,避免混淆。 此外,用户可能对如何开始使用Redis有进一步的问题,比如安装步骤或基本命令,但当前问题仅询问官网,所以保持回答简洁,但可以预判用户后续可能的需求,适当提供相关信息。如果有必要,还可以生成相关问题,帮助用户深入探索。 最后,确保回答结构清晰,使用中文,并正确应用格式要求,比如网址用代码块包裹。同时,检查是否有需要引用的内容,但根据问题,可能不需要引用来源,所以暂时不添加引用标识。</think>Redis的官方网站可通过以下方式访问: ```text https://redis.io ``` 该网站提供完整的文档下载、最新版本发布信息、客户端库支持列表以及社区资源。特别要注意区分: - `redis.io` 是开源版官方站点 - `redis.com` 是企业版商业服务网站 官网文档包含从基础命令到集群部署的完整指南,例如获取字符串键值的操作演示: $$ GET key_name $$
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值