Redis详解(二)redis的安装和简单操作命令

字节跳动校招内推码: NH19EF9
投递链接: https://jobs.toutiao.com/s/L3bLQM3

第二章 Redis安装和使用

简单的事情做到极致,学习是最好的投资!

redis是当下非常流行的基于kv结构的作为cache使用的NoSQL数据库。可以对数据执行curd。主要提升的是查询的性能。

可以作为Cache(缓存)使用后

中文:http://www.redis.cn/

1.介绍

Remote Dictionary Server(Redis)是

  1. 开源的

  2. 使用C语言编写

  3. 支持网络

  4. 可基于内存

  5. 可持久化的

  6. key-value数据库。key是字符类型,value可以是

    1. 字符串String
    2. 哈希(Map)
    3. 列表(List)
    4. 集合(Sets)
    5. 有序集合(sorted sets)

    每种数据类型都有自己的专属命令。

所以它通常被称为数据结构服务器。

1.1 流程

Cache(缓存):存在内存中的数据

user发起请求—控制器—service—dao----数据库

使用cache

user发起请求—控制器—service—redis

user发起请求—控制器—service—redis(没有数据)—dao—数据库

2.安装和使用

在linux上安装

## 安装
brew instal redis
## 启动
brew services restart redis
## 启动redis服务器
redis-server
## 终止redis的运行
control+c

直接关闭终端窗口可终止redis运行

这种启动方式不是后台启动,因此不推荐

### redis 客户端命令
quit

设置后台启动

vim redis.conf

默认是连接本机 127.0.0.1上的redis,端口是6379。

  1. 第一个命令,创建字符类型的数据

    redis-cli ## 调用工具执行命令
    set key value ## 等同于 insert into
    set name zhangsan
    
    get key ## 获取key的值,等同于select
    ## 关闭redis客户端
    shutdown
    ## 或者
    kill pid
    
    

3.redis客户端

3.1 功能

  1. 发送redis命令,编写redis命令
  2. 显示服务端的处理结果,显示数据。

用户开发人员-----在客户端中编写redis----客户端把命令发送给服务端----服务端把处理结果发送给-----客户端-----把数据呈现给用户。

3.2 redis客户端

  1. Redis-cli:redis自带的客户端,使用灵活,支持很多的命令。

    • 使用方式

      ./redis-cli
      

      默认是连接到127.0.0.1。上面的6379的redis。

    • 访问其他的服务器上的redis数据:

      ./redis-cli -h 192.168.1.10 -p 6379
      
      ## mac连接本机
      redis-cli -h 127.0.0.1 -p 6379
      

3.3 redis远程客户端

官网地址:https://redisdesktop.com/

3.4 redis编程客户端Jedis

​ redis的java编程客户端,redis官方首选推荐使用jedis,jedis是一个很小但很健全的redis的java客户端。通过jedis可以像使用redis命令行一样使用redis。

  • jedis完全兼容 redis2.8.x 和redis.3.x.x
  • jedis源码 :http://github.com/xetorthio/jedis

4. Redis基本操作命令(ping,dbsize,select,flushdb,quit)

  1. 沟通命令,查看状态

    127.0.0.1:6379> ping
    PONG
    
  2. 查看当前数据库中key的数目:dbsize

    127.0.0.1:6379> dbsize
    (integer) 1
    
  3. redis默认使用16个数据库

    redis默认使用16个库,从0到15。对数据库个数的修改,在redis.conf文件中

    # 进入redis的文件目录下
    cd /usr/local/redis-4.0.13/
    vim redis.conf
    
    会出现
    databases 16
    ## 如果使用mac的brew安装 安装位置在local的Cellar下
    
    

    我在mac下使用的brew安装的redis,brew帮我节省了大量的配置时间。但是我并没有找到redis的配置文件
    补充:brew把redis.conf放到了local/ect下。

  4. 切换库命令 select db

    127.0.0.1:6379> select 5  ## 切换到第六个数据库
    OK
    127.0.0.1:6379[5]> set k1 vq  ## 设置值 key1 value1
    OK
    127.0.0.1:6379[5]> set k2 v2  ## 设置值 key2 value2
    OK
    127.0.0.1:6379[5]> dbsize  ## 查看key_value的数量
    (integer) 2
    
    127.0.0.1:6379[5]> select 0 ## 选择第0个库
    OK
    127.0.0.1:6379> ## 第0个库没有标识
    
  5. 删除当前库的数据:flushdb

    实际生产环境中尽量不要用。

    127.0.0.1:6379> select 5
    OK
    127.0.0.1:6379[5]> flushdb
    OK
    127.0.0.1:6379[5]> 
    
  6. 退出exit 或 quit。

    127.0.0.1:6379[5]> quit
    bytedance$ ps -ef |grep redis
      501   552     1   0 10:00上午 ??         0:15.61 /usr/local/opt/redis/bin/redis-server 127.0.0.1:6379 
      501 11478  9728   0  3:39下午 ttys001    0:00.00 grep redis
    

5.redis的key的操作命令

(1)keys

语法:keys pattern

作用:查找所有符合模式pattern的key,pattern可以使用通配符。

通配符:

  • *:表示0或多个字符,例如

    keys * ## 查询所有的key
    
    127.0.0.1:6379> keys *## 为什么不能用?  数据太大,太慢
    1) "name"
    2) "home"
    3) "age"
    
    127.0.0.1:6379> keys k*
    1) "k2"
    2) "k1"
    127.0.0.1:6379> keys w*
    1) "wood"
    2) "world"
    3) "word"
    
  • ?:表示单个字符,例如:wo?d 匹配word,wood

    127.0.0.1:6379> keys wo?d
    1) "wood"
    2) "word"
    

    redis为什么快是因为他

    1. 是单线程的。单线程并不一定比多线程慢,没有上下文切换的话会快一点。
    2. 操作内存数据。
    3. linux的事件处理机制有关。事件轮询的IO处理机制:多路复用IO(有深度,并且复杂)

(2)exsists

key是否存在,有几个key存在。

127.0.0.1:6379> exists k1 k2 ## k1 k2 中有几个存在
(integer) 2
127.0.0.1:6379> exists k1 k2 k3 k4 k5
(integer) 2

(3)expire

  • 语法:expire key seconds
  • 作用:设置key的生存时间,超过时间,key自动删除。单位是秒。
  • 返回值:设置成功返回数字1,其他情况是0。一般与ttl命令一起使用。

(4)ttl

  • 语法:ttl key

  • 作用:以秒为单位,返回key的剩余生存时间(ttl:time to live)

  • 返回值

    • -1:没有设置key的剩余生存时间,key永不过期。
    • -2:key不存在。
    • 数字:key的剩余时间,秒为单位。
## 一开始的时候的keys
127.0.0.1:6379> keys *
1) "wood"
2) "k2"
3) "world"
4) "name"
5) "home"
6) "word"
7) "k1"
8) "age"

## 查询key的剩余生存时间
127.0.0.1:6379> ttl k1 
(integer) -1  ## 表示永不过期
127.0.0.1:6379> ttl k2
(integer) -1

## k1存活时间设置为20秒
127.0.0.1:6379> expire k1 20
(integer) 1 ## 成功

## 查询key的剩余生存时间
127.0.0.1:6379> ttl k1
(integer) 12  ## 还剩12秒
127.0.0.1:6379> ttl k1
(integer) 8  ## 还剩8秒
127.0.0.1:6379> ttl k1
(integer) 1  ## 还剩1秒
127.0.0.1:6379> ttl k1
(integer) -2 ## key不存在

## 结束时的keys
127.0.0.1:6379> keys *
1) "wood"
2) "k2"
3) "world"
4) "name"
5) "home"
6) "word"
7) "age"

127.0.0.1:6379> expire k100 10
(integer) 0 ##设置不成功

过期后可以节省空间,存放新的数据。定期清除redis保存的数据。

例子:验证码规则

## 创建验证码为1024
set verify_code 1024
## 设置时效为60秒
expire verify_code 60

## 用户输入验证码,验证正确
ttl verify_code
## 结果大于等于0 key没有过期,验证是有效。小于0就过期了,验证码时效。

(5)type

  • 语法:typekey
  • 作用:查看key所存储的数据类型。
  • 返回值:字符串表示的数据类型。
    • none(key不存在)
    • string(字符串)
    • list(列表)
    • set(集合)
    • zset(有序集)
    • hash(哈希表)
127.0.0.1:6379> type k1
none
127.0.0.1:6379> type k2
string
## 成功删除了前3个,后两个不存在。
127.0.0.1:6379> del k2 name wood k100 k1000
(integer) 3
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值