redis 基础 入门 博客分类: redis redis命令缓存nosql集群session
程序员文章站
2024-03-18 14:06:04
...
学习redeis初衷,系统并发量越来越大,由于需要开发分布式的应用,前端由nginx反向代理分发http请求到上游服务节点,节点是单独tomcat部署存在,需要对session进行统一管理,借助tomcat的redis插件把session的缓存到redis容器。
以下是整理的基本的redis入门相关指令,方便大家入门学习。
教程内容主要来源 “易百教程”:http://www.yiibai.com/redis/redis_environment.html
强烈给大家推荐“易百教程”,适合开发入门,地址:http://www.yiibai.com/
1.环境安装
启动redis:redis-server;
检查是否工作:redis-cli,输入ping;
2.redis配置,配置文件可在redis根目录redis.conf
基本语法:CONFIG GET CONFIG_SETTING_NAME
所有配置:CONFIG GET *;
3.数据类型
字符串:SET name "yiibai";GET name;
Hashes哈希值:HMSET user:1 username yiibai password 123;HGETALL user:1;
List列表:lpush totorList redis;lpush totorList mongodb;lpush totorList rebitmq;
lrange totorList 0 10;
Set集合:sadd totorList redis;sadd tutorList mongodb;sadd tutorList rebitmq;
smembers totorList;
集合排序:zadd totorList 0 redis; zaddtutorList 0 mongodb;zaddtutorList 0 rebitmq;
4.redis 命令
启动redis客户端:redis-cli;
远程服务器运行命令:redis-cli -h host -p port -a passowrd
5.keys 管理键
语法:COMMAND KEYNAME;
删除键:DEL key;
判断键:EXISTS KEY;
查找键:KEYS pattern;
键的数据值:TYPE key;
6.发布订阅
待定
7.事务
启动,事务开始:MULTI;
执行:EXEC;
8.脚本,支持Lua解析器用于计算脚本,2.6.0开始内置
命令:EVAL script numkeys key ... arg ...
9.redis连接
验证是否与redis服务器连接:AUTH "password";ping;(输出pong)
关闭连接:QUIT;
更改当前连接所选数据库:SELECT index;
10.redis服务器
服务器的统计数据和信息:INFO;
kill客户端连接:CLIENT KILL [ip,port];
连接列表:CLIENT LIST;
11.Redis备份
备份,创建dump.rdb在Redis目录:SAVE;
还原:CONFIG get dir;
后台自动备份:BGSAVE;
12.redis安全,客户端身份验证,确保redis配置文件密码一致
获取密码:CONFIG get requirepass;
设置密码:CONFIG set requestpass "yiibai";
AUTH验证:AUTH password;
13.Redis基准
语法:redis-benchmark [option] [option value];
例子:redis-benchmark -h 127.0.0.1 -p 6379 -t set,lpush -n 100000 -q
14.客户端连接
客户端最大数量:config get maxclients;
服务器最大连接设置:redis-server --maxclients 100000;
15.管道传输,批量执行命令,提高响应;
16.分区,数据分成多个redis,每个实例包含关键字的子集
17.java连接操作
jedis.jar;
扩展:
同步和异步:关注的是消息通信机制
同步:就是在发出一个"调用"时,在没有得到结果之前,该"调用"就不返回;
异步:由"调用者"主动等待这个"调用"的结果;
例子:
你打电话问书店老板有没有《分布式系统》这本书,如果是同步通信机制,书店老板会说,你稍等,”我查一下",
然后开始查啊查,等查好了(可能是5秒,也可能是一天)告诉你结果(返回结果)。
而异步通信机制,书店老板直接告诉你我查一下啊,查好了打电话给你,然后直接挂电话了(不返回结果)。然后
而异步通信机制,书店老板直接告诉你我查一下啊,查好了打电话给你,然后直接挂电话了(不返回结果)。然后
查好了,他会主动打电话给你。在这里老板通过“回电”这种方式来回调。
阻塞和非阻塞:程序在等待调用结果(消息,返回值)时的状态.
阻塞:调用结果返回之前,当前线程会被挂起。调用线程只有在得到结果之后才会返回
非阻塞:指在不能立刻得到结果之前,该调用不会阻塞当前线程
例子:
你打电话问书店老板有没有《分布式系统》这本书,你如果是阻塞式调用,你会一直把自己“挂起”,
直到得到这本书有没有的结果,如果是非阻塞式调用,你不管老板有没有告诉你,你自己先一边去玩了,
当然你也要偶尔过几分钟check一下老板有没有返回结果。
在这里阻塞与非阻塞与是否同步异步无关。跟老板通过什么方式回答你结果无关。
关于redis单线程的设计优势
1)绝大部分请求是纯粹的内存操作(非常快速)
2)采用单线程,避免了不必要的上下文切换和竞争条件
3)非阻塞IO
内部实现采用epoll,采用了epoll+自己实现的简单的事件框架。epoll中的读、写、关闭、连接都转化成了事件,然后利用epoll的多路复用特性,绝不在io上浪费一点时间
2)采用单线程,避免了不必要的上下文切换和竞争条件
3)非阻塞IO
内部实现采用epoll,采用了epoll+自己实现的简单的事件框架。epoll中的读、写、关闭、连接都转化成了事件,然后利用epoll的多路复用特性,绝不在io上浪费一点时间
4)单线程有时候比多线程更快,入需要考虑的并发、锁,也不会增加上下文切换代码更加简洁,集中处理问题;
个人见解:多核架构下,我还是看好多线程模型,但Redis的持久化、快照以及丰富的数据结构和运算功能更加强大一些。但Redis的持久化、快照以及丰富的数据结构和运算功能更加强大一些。
参考redis单线架构的解释:http://www.zhihu.com/question/19764056
上一篇: C语言 实现推箱子小游戏
下一篇: 将博客搬至CSDN
推荐阅读
-
redis 基础 入门 博客分类: redis redis命令缓存nosql集群session
-
tomcat7用redis集群解决方案 博客分类: tomcat/jdk部署相关Nosql tomcat、session、redis
-
redis 相关命令 博客分类: Nosql redis
-
redis 3.X 集群方案 博客分类: Nosql redis
-
Redis的Cluster集群搭建(几个文章网址) 博客分类: NoSql---Redis redisclusternosql分布式数据库
-
Redis命令参考中文版(Redis Command Reference) 博客分类: NoSQL综合Redis redisnosql译文数据库
-
redis相关知识,安装流程,Java调用 博客分类: redis redis安装nosql缓存jedis
-
redis相关知识,安装流程,Java调用 博客分类: redis redis安装nosql缓存jedis