楼主: jieforest

Redis笔记

[复制链接]
论坛徽章:
277
马上加薪
日期:2014-02-19 11:55:14马上有对象
日期:2014-02-19 11:55:14马上有钱
日期:2014-02-19 11:55:14马上有房
日期:2014-02-19 11:55:14马上有车
日期:2014-02-19 11:55:14马上有车
日期:2014-02-18 16:41:112014年新春福章
日期:2014-02-18 16:41:11版主9段
日期:2012-11-25 02:21:03ITPUB年度最佳版主
日期:2014-02-19 10:05:27现任管理团队成员
日期:2011-05-07 01:45:08
11#
 楼主| 发表于 2014-12-9 22:58 | 只看该作者
storted sets类型 是set的一个升级版本,他在set的基础上增加了一个顺序属性,在添加修改删除元素的时候可以指定,每次指定后,zset会自动为你排序

zadd方法 添加一个有序集合的元素,score 用于排序
>>> zadd zset1 1 "one" //项zset1中添加一个元素,指定顺序为1
>>> zadd zset1 2 "two"
>>> zadd zset1 3 "two"

zrange方法 取得有序集合里面的元素【指定范围,withscores输出顺序号】
>>> zrange zset1 0 -1 withscores //输出zset1中索引为0到-1 的元素,并输出顺序号

zrem方法 删除名称为key的zset的元素member
>>> zrem zset1 two  //删除zset1中的two

zincry方法 如果在名称为key的zset中已经存在元素member,则该元素的score增加increment否则项该集合中添加该元素,其score的值为increment
>>> zincry zset3 1 "one"
>>> zincry zset3 2 "two"
>>> zincry zset3 3 "three"

使用道具 举报

回复
论坛徽章:
277
马上加薪
日期:2014-02-19 11:55:14马上有对象
日期:2014-02-19 11:55:14马上有钱
日期:2014-02-19 11:55:14马上有房
日期:2014-02-19 11:55:14马上有车
日期:2014-02-19 11:55:14马上有车
日期:2014-02-18 16:41:112014年新春福章
日期:2014-02-18 16:41:11版主9段
日期:2012-11-25 02:21:03ITPUB年度最佳版主
日期:2014-02-19 10:05:27现任管理团队成员
日期:2011-05-07 01:45:08
12#
 楼主| 发表于 2014-12-9 22:58 | 只看该作者
zrank方法 返回名称为key的zset中member的排名(按score从小到大排序)即下标
>>> zrank zset3 tow

zrevrank方法 返回名称为key的zset中member的排名(按score从大到小排序)即下标
>>> zrevrank zset3 two

zrangebyscore方法 返回指定socre的范围的元素
>>> zrangebyscore zset3 2 3 withsocres

zcount 返回指定score的给定区间的数量
>>> zcount zset3 2 4

zcard方法 返回给点key的zset的所有元素个数

zremrangebyrank方法 删除zset中排名在给定区间的元素
>>> zremrangebyrank zset3 1 1 //删除zset3的根据下表排名的 索引1到1的元素

zremrangebyscore方法 删除集合中的指定score的区间的元素
>>> zremrangebyscore方法 zset3 3 4

使用道具 举报

回复
论坛徽章:
277
马上加薪
日期:2014-02-19 11:55:14马上有对象
日期:2014-02-19 11:55:14马上有钱
日期:2014-02-19 11:55:14马上有房
日期:2014-02-19 11:55:14马上有车
日期:2014-02-19 11:55:14马上有车
日期:2014-02-18 16:41:112014年新春福章
日期:2014-02-18 16:41:11版主9段
日期:2012-11-25 02:21:03ITPUB年度最佳版主
日期:2014-02-19 10:05:27现任管理团队成员
日期:2011-05-07 01:45:08
13#
 楼主| 发表于 2014-12-9 22:58 | 只看该作者
3、redis常用命令及高级应用

键值相关命令

keys 返回满足给定pattern的所有的key
>>> keys *
>>> keys r*

exists 确认一个key是否存在 0不存在 1 存在
>>> exists name
>>> exists age

del  删除一个key  1 成功  
>>> del age

使用道具 举报

回复
论坛徽章:
277
马上加薪
日期:2014-02-19 11:55:14马上有对象
日期:2014-02-19 11:55:14马上有钱
日期:2014-02-19 11:55:14马上有房
日期:2014-02-19 11:55:14马上有车
日期:2014-02-19 11:55:14马上有车
日期:2014-02-18 16:41:112014年新春福章
日期:2014-02-18 16:41:11版主9段
日期:2012-11-25 02:21:03ITPUB年度最佳版主
日期:2014-02-19 10:05:27现任管理团队成员
日期:2011-05-07 01:45:08
14#
 楼主| 发表于 2014-12-9 22:59 | 只看该作者
expire 设置一个key的过期时间

ttl 获取一个key的有效时长
>>> expire age 10
>>> ttl age

move 将当前数据库的key移转到其他库中

select  选择数据库
>>> select 0
>>> set age 30
>>> get age  
>>> move age 1
>>> get age  
>>> select 1  
>>> get age

persist 移除给定key的过期时间
>>> expire age 3000
>>> ttl age
>>> perisist age
>>> ttl age

使用道具 举报

回复
论坛徽章:
277
马上加薪
日期:2014-02-19 11:55:14马上有对象
日期:2014-02-19 11:55:14马上有钱
日期:2014-02-19 11:55:14马上有房
日期:2014-02-19 11:55:14马上有车
日期:2014-02-19 11:55:14马上有车
日期:2014-02-18 16:41:112014年新春福章
日期:2014-02-18 16:41:11版主9段
日期:2012-11-25 02:21:03ITPUB年度最佳版主
日期:2014-02-19 10:05:27现任管理团队成员
日期:2011-05-07 01:45:08
15#
 楼主| 发表于 2014-12-9 22:59 | 只看该作者
randomkey 随机返回key空间的一个key
>>> randomkey

rename 重命名key
>>> rename set2 set_r_2

type 测试key返回值类型
>>> type set2
>>> type set_r_2

服务器相关命令

ping 测试链接是否存活 PONG存活  否则连接失败
>>> ping

echo 在命令行打印一些内容

select 选择数据库【redis数据库编号从0~15】

quit 退出连接

使用道具 举报

回复
论坛徽章:
277
马上加薪
日期:2014-02-19 11:55:14马上有对象
日期:2014-02-19 11:55:14马上有钱
日期:2014-02-19 11:55:14马上有房
日期:2014-02-19 11:55:14马上有车
日期:2014-02-19 11:55:14马上有车
日期:2014-02-18 16:41:112014年新春福章
日期:2014-02-18 16:41:11版主9段
日期:2012-11-25 02:21:03ITPUB年度最佳版主
日期:2014-02-19 10:05:27现任管理团队成员
日期:2011-05-07 01:45:08
16#
 楼主| 发表于 2014-12-11 22:15 | 只看该作者
dbsize 返回当前数据库中key的数目
>>> dbsize   
>>> select 1
>>> dbsize

info 获取redis服务器相关的信息
>>> info

config get 实时转储收到的请求 、返回相关配置的数据
>>> config get dir
>>> config get *
>>> config get timeout

flushdb 删除当前数据库中的所有key
>>> dbsize
>>> flushdb
>>> dbsize

flushall 删除所有数据库的所有键

使用道具 举报

回复
论坛徽章:
277
马上加薪
日期:2014-02-19 11:55:14马上有对象
日期:2014-02-19 11:55:14马上有钱
日期:2014-02-19 11:55:14马上有房
日期:2014-02-19 11:55:14马上有车
日期:2014-02-19 11:55:14马上有车
日期:2014-02-18 16:41:112014年新春福章
日期:2014-02-18 16:41:11版主9段
日期:2012-11-25 02:21:03ITPUB年度最佳版主
日期:2014-02-19 10:05:27现任管理团队成员
日期:2011-05-07 01:45:08
17#
 楼主| 发表于 2014-12-11 22:16 | 只看该作者
4、Redis高级应用

安全性:
设置客户端来年结婚进行任何其他指定前需要使用的密码,
警告:因为redis速度非常快,所以设置密码要求很强,否则1s中能允许15万次的密码尝试
  1. //在配置文件中配置requirepass 密码
  2. #requirepass foobared
  3. requirepass beijing  
复制代码
客户端登录后 auth 密码;
登录时候 redis-cli -a 密码

使用道具 举报

回复
论坛徽章:
277
马上加薪
日期:2014-02-19 11:55:14马上有对象
日期:2014-02-19 11:55:14马上有钱
日期:2014-02-19 11:55:14马上有房
日期:2014-02-19 11:55:14马上有车
日期:2014-02-19 11:55:14马上有车
日期:2014-02-18 16:41:112014年新春福章
日期:2014-02-18 16:41:11版主9段
日期:2012-11-25 02:21:03ITPUB年度最佳版主
日期:2014-02-19 10:05:27现任管理团队成员
日期:2011-05-07 01:45:08
18#
 楼主| 发表于 2014-12-11 22:16 | 只看该作者
主从复制:
主从复制允许多个slave server 拥有和master server相同的数据库副本

redis主从复制特点
1)master可以用于多个slave【副服务器】
2)多个slave可以连接同一个master外,还可以链接到其他slave
3)主从复制不会阻塞master,在同步数据时,master可以继续处理client请求
4)提高系统的伸缩扩展性【原理:当一个主机当机,其他另外一个slave立马变成主机(依靠心跳感应)】

redis主从复制过程:
slave与master建立连接,发送sync同步命令
master启动后台进程,将数据库快照保存到文件中,同时master主进程会开始手机新的写命令并缓存
后台完成保存后,将此文件发送给slave
slave将此文件保存到硬盘上

使用道具 举报

回复
论坛徽章:
277
马上加薪
日期:2014-02-19 11:55:14马上有对象
日期:2014-02-19 11:55:14马上有钱
日期:2014-02-19 11:55:14马上有房
日期:2014-02-19 11:55:14马上有车
日期:2014-02-19 11:55:14马上有车
日期:2014-02-18 16:41:112014年新春福章
日期:2014-02-18 16:41:11版主9段
日期:2012-11-25 02:21:03ITPUB年度最佳版主
日期:2014-02-19 10:05:27现任管理团队成员
日期:2011-05-07 01:45:08
19#
 楼主| 发表于 2014-12-11 22:17 | 只看该作者
配置主从服务器
配置slave服务器很简单,只需要在slave的配置文件加入以下配置
slaveof 192.168.1.1 6379 #指定master的ip和端口
masterauth beijing #这是主机密码

事务处理:
支持事务比较简单,redis织女呢个保证一个client发起的事务中的命令
可以连续只写,而中间不会插入其他命令,
当一个茨愣头在一个连接中发出multi命令时,这个连接会进入一个事务上下文,
该连接后续的命令不会立即执行,而是先放到一个队列中,
当只写exec命令时候,redis会顺序只写队列中的所有命令
multi 打开事务上下文
discard 取消事务,事务回滚

使用道具 举报

回复
论坛徽章:
277
马上加薪
日期:2014-02-19 11:55:14马上有对象
日期:2014-02-19 11:55:14马上有钱
日期:2014-02-19 11:55:14马上有房
日期:2014-02-19 11:55:14马上有车
日期:2014-02-19 11:55:14马上有车
日期:2014-02-18 16:41:112014年新春福章
日期:2014-02-18 16:41:11版主9段
日期:2012-11-25 02:21:03ITPUB年度最佳版主
日期:2014-02-19 10:05:27现任管理团队成员
日期:2011-05-07 01:45:08
20#
 楼主| 发表于 2014-12-11 22:17 | 只看该作者
exec 执行事务
  1. >>> get age
  2. >>> multi
  3. >>> set age 10
  4. >>> set age 20
  5. >>> exec  
  6. >>> getage
复制代码
注意;当执行事务上下文的时候,假如事务队列里面的命令有错误,执行后会发现事务不能回滚。此为redis的事务处理很简单

使用道具 举报

回复

您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

TOP技术积分榜 社区积分榜 徽章 团队 统计 知识索引树 积分竞拍 文本模式 帮助
  ITPUB首页 | ITPUB论坛 | 数据库技术 | 企业信息化 | 开发技术 | 微软技术 | 软件工程与项目管理 | IBM技术园地 | 行业纵向讨论 | IT招聘 | IT文档
  ChinaUnix | ChinaUnix博客 | ChinaUnix论坛
CopyRight 1999-2011 itpub.net All Right Reserved. 北京盛拓优讯信息技术有限公司版权所有 联系我们 未成年人举报专区 
京ICP备16024965号-8  北京市公安局海淀分局网监中心备案编号:11010802021510 广播电视节目制作经营许可证:编号(京)字第1149号
  
快速回复 返回顶部 返回列表