redis使用详解篇-1

Redis

redis的优势

存储结构

  1. 字符类型

  2. 散列类型

  3. 列表类型

  4. 集合类型

  5. 有序集合

功能

  1. 可以为每个key设置超时时间;

  2. 可以通过列表类型来实现分布式队列的操作

  3. 支持发布订阅的消息模式

简单

  1. 提供了很多命令与redis进行交互

redis的应用场景

  1. 数据缓存(商品数据、新闻、热点数据)

  2. 单点登录

  3. 秒杀、抢购

  4. 网站访问排名…

  5. 应用的模块开发

redis的安装

  1. 下载redis安装包

  2. tar -zxvf 安装包

  3. 在redis目录下 执行 make

  4. 可以通过make test测试编译状态

  5. make install [prefix=/path]完成安装

启动停止redis

./redis-server …/redis.conf

./redis-cli shutdown

以后台进程的方式启动,修改redis.conf daemonize =yes

连接到redis的命令

./redis-cli -h 127.0.0.1 -p 6379

其他命令说明

Redis-server 启动服务

Redis-cli 访问到redis的控制台

redis-benchmark 性能测试的工具

redis-check-aof aof文件进行检测的工具

redis-check-dump rdb文件检查工具

redis-sentinel sentinel 服务器配置

多数据支持

默认支持16个数据库;可以理解为一个命名空间

跟关系型数据库不一样的点

  1. redis不支持自定义数据库名词

  2. 每个数据库不能单独设置授权

  3. 每个数据库之间并不是完全隔离的。 可以通过flushall命令清空redis实例面的所有数据库中的数据

通过 select dbid 去选择不同的数据库命名空间 。 dbid的取值范围默认是0 -15

使用入门

  1. 获得一个符合匹配规则的键名列表

keys pattern [? / * /[]]

keys mic:hobby

  1. 判断一个键是否存在 , EXISTS key

  2. type key 去获得这个key的数据结构类型

各种数据结构的使用

字符类型

一个字符类型的key默认存储的最大容量是512M

赋值和取值

​ SET key value

​ GET key

递增数字

incr key

​ 错误的演示

int value= get key;

value =value +1;

set key value;

key的设计

对象类型:对象id:对象属性:对象子属性

建议对key进行分类,同步在wiki统一管理

举例:

短信重发机制:

sms:limit:mobile 138 expire

递增指定的整数

incrby key increment

原子递减

decr key

向指定的key追加字符串

append key value

获得key对应的value的长度

strlen key

同时获得多个key的value

mgetkey key

同时设置多个key的value

mset key value key value key value

判断是否存在存在返回1,且不更新,不存在或者过期则插入

setnx

列表类型

list 可以存储一个有序的字符串列表

从左边或者右边push数据

LPUSH/RPUSH:

LPUSH/RPUSH key value value …

{17 20 19 18 16}

获得列表的长度

llen key

lrange key start stop ; 索引可以是负数, -1表示最右边的第一个元素

更改特定位置的元素值

lrem key count value

设置索引的值

lset key index value

LPOP/RPOP : 取数据

应用场景:可以用来做分布式消息队列

散列类型

hash key value 不支持数据类型的嵌套

比较适合存储对象

person

age 18

sex 男

name mic

hset key field value

hget key filed

一次性设置多个值

hmset key filed value [filed value …]

一次性获得多个值

hmget key field field …

获得hash的所有信息,包括key和value

hgetall key

hexists key field 判断字段是否存在。 存在返回1. 不存在返回0

hincryby

hsetnx 如果字段存在,直接返回0 不存在,复值,并且返回1

hdel key field [field …] 删除一个或者多个字段

set集合类型

set 跟list 不一样的点。 集合类型不能存在重复的数据。而且是无序的

sadd key member [member …] 增加数据; 如果value已经存在,则会忽略存在的值,并且返回成功加入的元素的数量

srem key member 删除元素

smembers key 获得所有数据

sdiff key key … 对多个集合执行差集运算

sunion 对多个集合执行并集操作, 同时存在在两个集合里的所有值

有序集合

zadd key score member

zrange key start stop [withscores] 去获得元素。 withscores是可以获得元素的分数

如果两个元素的score是相同的话,那么根据(0<9<A<Z<a<z) 方式从小到大

网站访问的前10名。

redis的事务处理

MULTI 去开启事务

EXEC 去执行事务

过期时间

expire key seconds

ttl 获得key的过期时间(-2表示过期)

发布订阅

publish channel message

subscribe channel [ …]

分片策略

codis . twmproxy(redis和应用间做一个分片,保证做到一个高可用集群)

外部访问

修改 conf

bind ip

关闭保护模式

redis实现分布式锁

秒杀,全局递增id,缓存击穿(防止缓存击穿导致问题)

数据库可以做 activemq

缓存 -redis setnx

zookeeper

redis数据存满解决办法:

  • 加内存
  • 分片
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值