redis笔记1
存储结构
- 字符类型
- 散列类型
- 列表类型
- 集合类型
- 有序集合
- 可以为每个key设置超时时间;
- 可以通过列表类型来实现分布式队列的操作
- 支持发布订阅的消息模式
- 提供了很多命令与redis进行交互
- 数据缓存(商品数据、新闻、热点数据)
- 单点登录
- 秒杀、抢购
- 网站访问排名…
- 应用的模块开发
功能
简单
redis的应用场景
redis的安装
- 下载redis安装包
- tar -zxvf 安装包
- 在redis目录下 执行 make
- 可以通过make test测试编译状态
- make install [prefix=/path]完成安装
启动停止redis
./redis-server ../redis.conf
./redis-cli shutdown
如果有lua脚本执行了死循环,需要用 ./redis-cli shutdown nosave 才能关闭
以后台进程的方式启动,修改redis.conf daemonize =yes
连接到redis的命令
./redis-cli -h 127.0.0.1 -p 6379
允许远程连接的设置
将 bind 127.0.0.1 使用#注释掉,改为# bind 127.0.0.1(bind配置的是允许连接的ip,默认只允许本机连接;若远程连接需注释掉,或改为0.0.0.0) 将 protected-mode yes 改为 protected-mode no(3.2之后加入的新特性,目的是禁止公网访问redis cache,增强redis的安全性)
其他命令说明
Redis-server 启动服务
Redis-cli 访问到redis的控制台
redis-benchmark 性能测试的工具
redis-check-aof aof文件进行检测的工具
redis-check-dump rdb文件检查工具
redis-sentinel sentinel 服务器配置
多数据支持
默认支持16个数据库;可以理解为一个命名空间
跟关系型数据库不一样的点
- redis不支持自定义数据库名词
- 每个数据库不能单独设置授权
- 每个数据库之间并不是完全隔离的。 可以通过flushall命令清空redis实例面的所有数据库中的数据
通过 select dbid 去选择不同的数据库命名空间 。 dbid的取值范围默认是0 -15
使用入门
- 获得一个符合匹配规则的键名列表
keys pattern [? / * /[]]
keys mic:hobby
- 判断一个键是否存在 , EXISTS key
- 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
incryby key increment 递增指定的整数
decr key 原子递减
append key value 向指定的key追加字符串
strlen key 获得key对应的value的长度
mget key key..
同时获得多个key的value
mset key value key value
key value …
setnx
列表类型
list, 可以存储一个有序的字符串列表
LPUSH/RPUSH: 从左边或者右边push数据
LPUSH/RPUSH key value value …
{17 20 19 18 16}
llen num 获得列表的长度
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 … 一次性获得多个值
hgetall key 获得hash的所有信息,包括key和value
hexists key field 判断字段是否存在。 存在返回1. 不存在返回0
hincryby
hsetnx
hdel key field [field …] 删除一个或者多个字段
集合类型
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 去开启事务
set userinfo:name victor 返回QUEUED
set userinfo:age 18 返回 QUEUED
EXEC 去执行事务
exec 提交执行事务
在执行中才报错的语句,事务不会回滚。
过期时间
expire key seconds
ttl 获得key的过期时间
发布订阅
publish channel message
subscribe channel [ …]
分片策略:codis . twmproxy
redis实现分布式锁
数据库可以做 activemq
缓存 -redis setnx
zookeeper
redis笔记1的更多相关文章
- 【Redis笔记(四)】 Redis数据结构 - list链表
原创作品,转载请标明:http://blog.csdn.net/Xiejingfa/article/details/50573605 经过前面的介绍,我们学习了Redis中string字符串.hash ...
- redis笔记之一
NoSQL简介 全称是Not Only SQL,泛指菲关系型数据库,它是通过键值对存储数据并且将数据存储在内存中.而像mysql,sql server这些通过关系表存数据的就叫关系型数据库 为什么需要 ...
- Redis 笔记 01:入门篇
Redis 笔记 01:入门篇 ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ...
- redis笔记总结之redis介绍
一.Redis介绍: redis的发展历史简单的理解为因为使用类似MySql这类关系型数据库不方便进而开发的开源的.轻量级的.非关系型的,直到现在一直不断完善的一款NoSql数据库.具体的介绍大家可以 ...
- Redis笔记(1)数据结构与对象
1.前言 此系列博客记录redis设计与实现一书的笔记,提取书本中的知识点,省略相关说明,方便查阅. 2.基本数据结构 2.1 简单动态字符串SDS(simple dynamic string) 结构 ...
- 2020ubuntu1804server编译安装redis笔记(一)及报make test错误解决办法
redis的大名我想大家都不陌生,今天在ubuntu server上进行编译安装,虽然apt也可以安装,但作为内存数据库,redis又是c开发的,编译安装,对机器的适应和性能更好. 安装笔记如下 第1 ...
- 2020ubuntu1804server编译安装redis笔记(三)启动服务和使用redis
第一篇笔记记录了ubuntu1804server编译安装redis5,接下来要配置redis5了 网址:https://www.cnblogs.com/qumogu/p/12435694.html 第 ...
- redis笔记补充
redis补充 这篇文章是redis入门笔记的补充. 1.info命令 用来显示服务的信息. info命令可以跟下面的选项: server: 关于 Redis 服务器的一些信息 clients: 客户 ...
- redis笔记
redis字符串 : 存储基本的一个键值对. redis哈希 : Redis的哈希值是字符串字段和字符串值之间的映射,所以他们是表示对象的完美数据类型. 一个哈希表可以存在多个键值对,可对键值进行增删 ...
- Redis笔记,安装和常用命令
转载于:http://www.itxuexiwang.com/a/shujukujishu/redis/2016/0216/96.html?1455870708 一.redis简单介绍 redis是N ...
随机推荐
- Scala字符穿插值器
从2.10.0版本开始,Scala提供了三种创新的字符串插值方法: s.f 和 raw 于2.11.0版本开始,用于模式匹配patter match中 小结: s: s"Hello, $na ...
- MongoDB 读偏好设置中增加最大有效延迟时间的参数
在某些情况下,将读请求发送给副本集的备份节点是合理的,例如,单个服务器无法处理应用的读压力,就可以把查询请求路由到可复制集中的多台服务器上.现在绝大部分MongoDB驱动支持读偏好设置(read pr ...
- [前端] js中call方法的理解和思考
最近接手前端的工作,对当前项目中自制的js框架下,js的使用产生了非常多的困惑.尤其是js的类,对象,函数,this等等相互之间的关系和转换,以前学过也忘得差不多了,现在基本相当于重新看. js中的函 ...
- Ambassador中,启用不同的Load balancing算法
默认就是轮循,如果要其它hash或是最少请求,那就需要作更多的设置了. https://www.getambassador.io/reference/core/load-balancer/#sourc ...
- 使用DRF来快速实现API调用服务
本帖最后由 范志远 于 2019-3-19 16:55 编辑 增加加载Djagno REST Framework模块的选项 对于settings.py文件的INSTALLED_APPS增加'rest_ ...
- requests的请求机制
库结构: 工作机制: api.py get.post.put.delete等请求方式都在api文件中,另外,api文件中还有个request方法,使用任何一种请求方式都是调用request方法,只是传 ...
- Spring Boot 中Bean的初始化后和销毁前的处理
Spring 对Bean的生命周期的操作提供了支持.具体实现又两种方式 1.使用@Bean 中的 initMethod 和 destroyMethod2.注解方式 利用JSR-250 中的@PostC ...
- 剑指Offer-15.反转链表(C++/Java)
题目: 输入一个链表,反转链表后,输出新链表的表头. 分析: 可以利用栈将链表元素依次压入栈中,再从栈中弹出元素重新建立链表,返回头节点. 也可以在原有的链表上来翻转,先保存当前节点的下一个节点,然后 ...
- mysql里的insert
insert不跟where 比如 insert into table (name) value('******')where id =1 肯定不行的 insert 语句 是插入语句,不跟条件的. 如果 ...
- http与Rpc
RPC即远程服务调用 出现原因:随着项目越来越大,访问量越来越大,为了突破性能瓶颈,需要将项目拆分成多个部分,这样比起传统的项目都是本地内存调用,分布式的项目之间需要在网络间进行通信 服务之间的远程调 ...