Redis (一) —— 简介和基本操作

一.简介

     1. Redis的数据存放在内存中(好处:速度快;减少计算的时间;减轻数据库压力)

     2.相比HashMap/Memcached,其有更丰富的数据类型;支持多种编程语言;功能丰富:持久化机制、内存淘汰策略、事务、发布订阅;支持集群、分布式

     3.默认有16个库(0~15).可在配置文件中修改(databases 16);因为没有完全隔离,不像数据库,不适合把不同的库分配给不同的业务使用。默认使用第一个db0.在及群里面只能使用第一个db

二.基本操作

1.数据库、键相关

select 0                 —— 切换数据库
          
flushdb                  ——清空当前数据库
        
flushall                 ——清空所有数据库  

keys *                   ——查看所有键           

dbsize                   ——获取键总数           

exists 键名               ——查看键是否存在

rename 原键名 新键名       ——重命名键                                

type 键名                 —— 查看类型

2.String字符串(存储 int(整数)、float(浮点数) 、 String(字符串))

getrange  key 0 1              //获取指定范围内的字符

strlen   key                   //获取值长度

append key value              //追加内容

mset key1 value1 key2 value2 //设置多个值

mget key1 key2               //获取多个值

SET key  value EX/PX 60 NX/XX  //EX-过期时间以秒为单位; PX-设置过期时间以毫秒为单位;;NX-仅在键不存在时设置键;XX - 只有在键已存在时才设置。

incr key                       //整数值递增(值不存在会得到1)
incrby key 100                 //增加100
incrbyfloat key 2.3            //浮点数增加
decr key                       //整数值递增
decrby key 100                 //整数值减100
   

3.Hash 哈希(存储多个无序的键值对)

hset key field value                             //添加
hmset key field1 value1 fie;d2 value2           //批量添加
hget key field                                  //获取
hmget key field1 fie;d2                         //批量获取
hvals key                                      //获取key下所有的filed
hgetall                                        //返回所有的filed 和value
hdel key field1 field2                         //删除filed
hlen key                                       //长度

注意事项:

1.field 不能单独设置过期时间

 2.需要考虑数据量分布的问题(所有相关值聚集到一个key,节约了内存空间,减少了key冲突,但field非常多的时候,也存在无法分布到多个节点的问题)

4.List列表(存储有序的字符串(从左到右),元素可以重复)

lpush  queue v1 v2                    //从列表头部插入值
rpush  queue v1 v2                    //从列表尾部插入值
lpop   queue                          //移除并返回列表的第一个元素
rpop   queue                         //移除并返回列表的最后一个元素
lindex queue 0                      //通过索引获取列表中的元素。-1 表示列表的最后一个元素, -2表示列表的倒数第二个元素;0 2 表返回0~2的元素

5.Set 集合(存储String类型的无序集合)

sadd myset abcdefg             //添加一个或者多个元素

smembers myset                //获取所有元素

scard myset                  //统计元素个数

srandmember myset           //随机获取一个元素
 
spop myset                 //随机弹出一个元素

srem myset d e f          //移除一个或者多个元素

sismember myset a        //查看元素是否存在

6.ZSet 有序集合(sorted set存储有序的元素。每个元素有个score,按照score从小到大排名。score相同时,按照key的ASCII码排序)


zadd myzset 10 java 20 php 30 ruby                //添加元素

zrange/zrevrange   myzset 0-1 withscores         //获取全部元素       

zrangebyscore myzset 20 30	                    //根据分值区间获取元素 
          
zrem myzset php cpp	                           //移除元素 也可以根据 score rank 删除	

zcard myzset                                   //统计元素个数

zincrby myzset 5 python                        //分值递增

zcount myzset 20 60                            //根据分值统计个数

zrank myzset python                            //获取元素 rank

zscore myzset python                           //获取元素 score

7.list、set、zset 对比

数据结构

是否允许重复元素

是否有序

有序实现方式

列表list

索引下标

集合set

有序集合zset

分值 score

 

三.应用场景

  • 缓存-提升热点数据的访问速度
  • 共享数据-数据的存储和共享的问题
  • 全局ID分布式全局ID的生成方案(分库分表)
  • 分布式锁-进程间共享数据的原子操作保证
  • 在线用户统计和计数
  • 队列、栈-跨进程的队列/栈
  • 消息队列-异步解耦的消息机制
  • 服务注册与发现-RPC通信机制的服务协调中心(Dubbo 支持 Redis)
  • 购物车
  • 新浪/Twitter 用户消息时间线
  • 抽奖逻辑(礼物、转发)
  • 点赞、签到、打卡
  • 商品标签
  • 用户(商品)关注(推荐)模型
  • 电商产品筛选
  • 排行榜
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值