Redis快速入门

Redis入门

1 Redis介绍

1)基本概念

使用c语言开发的高性能键值数据库。键值类型:

String字符类型、map散列类型、list列表类型、set集合类型、sortedset有序集合类型

2)应用场景

缓存、分布式集群session分离、聊天室在线好友列表、任务队列、应用排行榜、访问统计、数据过期处理。

2 Redis配置和启动

  • 前端启动

    启动命令*./redis-server*

    ctrl+c或者*./redis-cli shutdown*

  • 后端启动

    将/root/redis-3.0.0/redis/conf下的redis.conf文件拷贝至bin目录下

    vim redis.conf修改redis.conf文件,daemonize改为yes

    使用配置文件启动*./redis-server redis.conf*

3 REDIS数据类型

String类型

​ redis的字符串为动态字符串,采用预分配冗余的方式减少内存频繁分配,所以capacity大于len.

字符串长度小于1M时,扩容加倍现有空间。超过1M,扩容增加1M,最大长度512M。

img

  • 赋值 set key value
127.0.0.1:6379> set test 123
OK
  • 取值get key
127.0.0.1:6379> get test
"123"
  • 取值并赋值 getset key value
127.0.0.1:6379> getset test 321
"123"
127.0.0.1:6379> get test
"321"
  • 批量取值并赋值mset key value [key value…] mget key [key…]
127.0.0.1:6379> mset k1 v1 k2 v2 k3 v3
OK
127.0.0.1:6379> mget k1 k2
1) "v1"
2) "v2"
  • 删除del key
127.0.0.1:6379> del test
(integer) 1
  • 递增数值、增加指定整数、递减数值、减少指定数值
127.0.0.1:6379> set num 1
OK
127.0.0.1:6379> incr num
(integer) 2
127.0.0.1:6379> incr num
(integer) 3
127.0.0.1:6379> incr num
(integer) 4

127.0.0.1:6379> incrby num 2
(integer) 8
127.0.0.1:6379> incrby num 2
(integer) 1

127.0.0.1:6379> decr num
(integer) 9
127.0.0.1:6379> decr num
(integer) 8
  • 追加字符
127.0.0.1:6379> set str hello
OK
127.0.0.1:6379> append str "world"
(integer) 10
127.0.0.1:6379> get str
"helloworld"
  • 获取长度

应用: 商品编号、订单号为string的递增数字生成、常见用途是缓存序列化后的信息,如将用户个人信息序列化为JSON字符串存入redis中,取出信息时进行反序列化。

Hash类型

hash提供了字段和字段值的映射,字段值只能是字符串类型,不支持其他类型。使用HashMap作为底层数据结构,可以扩容和缩容。

  • 设置单个字段

    HSET keyfield value
    
  • 设置多个字段值

  • 不存在时赋值

  • 取单个字段值

    HGET key field
    
  • 获取多个字段值

  • 获取所有字段值

  • 删除字段

  • 增加数字

  • 判断字段是否存在

    HEXISTS key field
    
  • 获取字段名或字段值

  • 获取字段数量

    HLEN key
    

img

应用:

​ 存储部分对象信息,不同于字符串一次性全部序列化整个对象,hash可对对象结构的每个字段单独存储。比较节省网络流量和机器内存。

List类型

Linkedlist采用双向链表存储数据,特点:增删快、查询慢。可以当作队列/栈使用

img

  • 列表左边增加元素

    LPUSH key value [value ...]
    
  • 列表右边增加元素

    RPUSH key value [value ...]
    
  • 列表切片

    LTRIM key start stop
    
  • 弹出列表左边元素

    LPOP key
    
  • 弹出列表右边元素

    RPOP key
    
  • 获取列表元素个数

    LLEN key
    
  • 删除列表元素

    LREM key count value
    
  • 获取指定索引元素值

    LINDEX key index
    
  • 设置指定索引元素值

    LSET key index value
    
  • 插入元素

  • 列表转移

  • 阻塞弹出

    BLPOP key [key ...] timeout
    

应用:

​ 异步队列,将需要延后处理的任务结构体序列化为字符串塞入Redis的列表,另一个线程从此列表中轮询数据进行处理。

Set类型

​ 它内部的键值对是无序唯一的,相当于一个特殊的字典,字典的所有value都是为NULL。内部使用hash结构,底层数据结构也为HashMap。

基本命令

  • 增加元素

    sadd ket meber1 [meber2]
    
  • 弹出随机元素

    spop key
    
  • 删除元素

    srem key member
    
  • 获取集合中的所有元素数量

    scard key
    
  • 判断元素是否在集合中

    sismemeber key member
    

集合运算命令

  • 差运算 sdiff key [key…]

  • 交运算 sinter key [key…]

    ​ sinterstore destination key [key…]

  • 并运算 sunion key [key…]

    ​ sunionstrore destination key [key…]

ZSET

​ 有序集合和集合一样,可以包含任意数量、各不相同的元素,不同于集合,有序集合的每个元素关联着浮点数格式分支,按分值对元素进行排序。

  • 添加元素

    ZADD key score element [[score element] [score element] ...]
    
  • 移除元素

    ZREM key element [element ...]
    
  • 返回分数分值

    ZSCORE key element
    
  • 增加元素分值

     ZINCRBY key increment element
    
  • 返回集合元素数量

    ZCARD key  返回有序集合包含的元素数量
    
  • 获取指定分值范围内升序元素

    ZRANGEBYSCORE key min max [WITHSCORES] [LIMIT offset count]
    
  • 计算指定分数范围内元素数量

    ZCOUNT key min max 
    

4 Keys命令

  • keys pattern 返回满足给定pattern的所有keys

    keys * 查询数据库中所有keys

  • exists key 确认一个key是否存在

  • del key 删除一个key

  • rename key 重命名key

  • type key 判断值的类型

5 Redis持久化方式

Rdb方式(默认)

redis非法关闭时丢失最后一次持久化之后的数据,可以在redis.conf中设置持久化快照条件和持久化文件的存储目录,redis主要有三种创建RDB文件的方式:

  • 执行SAVE命令 手动 阻塞 快
  • 执行BGSAVE命令 手动 不阻塞 慢
  • 配置save选项的自动保存条件被满足 自动 不阻塞 慢

注:BGSAVE命令会使服务器fork创建一个子进程,主进程负责处理客户端的命令请求,子进程负责创建RDB文件,当子进程创建完RDB文件并退出时,通知父进程创建完毕。

img
img
Aof方式

操作一次redis数据库,将操作记录存储到aof持久化文件中。

将redis.conf中的appendonly改为yes,开启持久化方案,也可以设置Aof文件存储的目录和名称

若redis重启,数据从aof文件加载

6 Redis应用场景

  • 存储用户时间线
  • 缓存和消息分发、任务调度
  • 计数器、排行榜、用户关系
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值