【读书笔记】Redis入门
- Remote Dictionary Server 远程字典服务
- Redis是基于内存的存储
- 在一台普通的笔记本上,Redis每秒的读取速度可以达到10万
- 内存读取数据,断电的时候数据会丢失,但是Redis支持异步持久化到硬盘
- 多功能
- 数据库开发
- 缓存开发
- 队列开发
- 发布/订阅模式,可构建聊天室系统
- 键生存时间
- 每个键都可以设置生存时间,时间到后自动删除
- 与memcached的对比
- Redis是单线程,Memcached是多线程,所以多核服务器Mem的性能更高
- Redis的性能已经足够优秀了,所以大部门情况下Redis的性能并不会成为瓶颈
- 如果需要用到高级数据类型和持久化,Redis会是更好的选择
- 项目是开源的,3万多行代码,100名贡献者
- 安装与命令
- redis-cli redis command line interface
- 命令回复
- 状态回复 PONG
- 错误回复 ERROR
- 整数回复 1
- 字符串回复 "1"
- 空回复 nil
- 多行字符串回复 "foo" "bar"
- 字典实例
- Redis默认支持16个字典实例
- Select 1选择1号数据库字典, 默认是0号
- FLUSHALL会清空所有 字典里面的数据,彼此并不隔离
- 不支持自定义名字
- 大小
- Redis非常轻量级,一个空的Redis实例只占有1M的大小
- 键命名:
- 对象类型:对象ID:对象属性
- 键的命名一定要有意义,如u:1:f的可读性显然不如user:1:friends好
2:Redis常用命令
- Keys * 显示所有的键,不建议在生产环境使用
- Exists,判断一个键是否存在。
- 返回1 表示存在
- 返回2 表示不存在
- Del k1 k2 k3 ....kn
- 返回 1/2/3../n 表示成功删除的键的个数
- Keys */k1 获取键
- Type k1/k2... 获取键的类型
- Set/Lpush/
- 字符型
- 键允许的最大容量为512M
- 是其他四中类型的基础
- 命令
- set
- get
- incr、decr 递增 递减
- 如果是string会报错, 比如incr s1(s1 的值是a)
- 所有redis命令都是原子操作,不会出现并发的问题
- incrby、decrby i 5 把i增加/减少 5
- incrbyfloat i 2.5 通过float类型添加
- append key value 向key的末尾
- Mset k1 v1 k2 v2
- Mget k1 k2 k3
- GetBit/SetBit key offset 0/1 设置key值offset位置的bit为0或者1
- BitCount k start end
- BitOp ex: bitop or result foo1 foo2
- And 并且
- Or 或者
- XOR 异或
- Not 非
- 利用位操作命令可以非常紧凑地存储布尔值。比如某网站的每个用户都有一个递增的整数ID,如果使用一个字符串类型键配合位操作来记录每个用户的性别(用户ID作为索引,二进制位值1和0表示男性和女性),那么记录100万个用户的性别只需占用100 KB多的空间,而且由于GETBIT和SETBIT的时间复杂度都是0(1),所以读取二进制位值性能很高。
- GetSet, set一个新值给key,返回旧值
你的系统每当有新用户访问时就用INCR命令操作一个Redis key。你希望每小时对这
2. 散列型
- 最多可以容纳2^32个键
- 命令
- Hset key field value
- Hget key field
- Hmset key field1 value1 field2 values
- Hmget key field1 field2
- Hexists key field1 查看key 中 field1是否存在
- Hsetnx key filednotexist value
- HIncrby key filed 20 将key中 field的值增加20
- Hdel key field field2 批量删除 key中的域
- Hkeys key 获取key中所有的field
- Hvals key 获取key中所有的值
- Hlen key 获取key中 field的个数
3. 列表型
- 概览
- 列表内部是使用双向链表实现的,所以越靠近两端的元素速度越快
- 最多可以容纳2^32-1个键
- 命令
- Lpush listkey 1 2 3 4
- Rlush listkey 5 6 ,结果是 4 3 2 1 5 6
- Lpop listkey
- Rpop listkey
- Llen listkey 返回键的元素数量,不存在返回0
- Lrange listkey start end 返回 start 到 end之间的元素
- Lrange listkey 0 lenth 从左边开始获取所有
- Lrange listkey -length -1 从右边开始获取所有
- Lrem listkey count value
- count >0 从左边开始,删除count个键值等于value的键
- count <0 从右边开始,删除count个键值等于value的键
- Lindex listkey 0 获取左边第一个, Lindex listkey -1 获取右边第一个
- Ltrim listkey start end 类似 lrange
- Linsert listkey After/Before findValue insertValue 在listkey中查找值等于findValue的元素,然后根据After/Before在后面插入数据
- RpopLpush source destination 很方便的传递数据,从一个列表的队尾传递到另一个列表的队首。
- 应用场景,较少访问中间元素的应用场景
- 新鲜事
- 日志
4. 集合型
- 概览
- 一个集合类
- 最多可以容纳2^32-1个键
- 命令
- Sadd key a b c 批量添加元素
- Srem key a d 删除 a,d没有找到
- Smembers key
- Sismember key a 判断a是否存在在key中
- Sdiff key1 key2 表示所有属于key1但是不属于key2的元素
- Sinter key1 key2 取交集
- Sunion key1 key2 取并集
- Scard key1 获取key中元素个数
- Sdiffstore destiontion key1 key2
- Sintertore destiontion key1 key2
- Sunionstore destiontion key1 key2
- Srandmember key 随机获取key中的元素
- 实践
- 存储文章标签
- 127.0.0.1:6379> sadd post:1:tags java
(integer) 1
127.0.0.1:6379> sadd post:2:tags java redis
(integer) 2
127.0.0.1:6379> sadd post:3:tags java redis mysql
(integer) 3
127.0.0.1:6379> sadd tags:redis:post 3
(integer) 1
127.0.0.1:6379> sadd tags:mysql:post 2 3
(integer) 2
127.0.0.1:6379> sadd tags:java:post 1 2 3
(integer) 3
127.0.0.1:6379> sinter tags:redis:post tags:mysql:post tags:java:post
1) "3"
127.0.0.1:6379>
sinterstore tags_inter tags:redis:post tags:mysql:post tags:java:post
5:有序集合
4:Redis重要特性
【读书笔记】Redis入门的更多相关文章
- <读书笔记>如何入门爬虫?
大部分爬虫框架都是 发送请求 获得页面 解析页面 下载内容 存储内容 定个宏伟目标 淘宝1000页 知乎 豆瓣 ... python基础 list.dict:序列化爬取的内容 切片:分割爬取内容,获取 ...
- redis入门笔记(2)
redis入门笔记(2) 上篇文章介绍了redis的基本情况和支持的数据类型,本篇文章将介绍redis持久化.主从复制.简单的事务支持及发布订阅功能. 持久化 •redis是一个支持持久化的内存数据库 ...
- redis入门笔记(1)
redis入门笔记(1) 1. Redis 简介 •Redis是一款开源的.高性能的键-值存储(key-value store).它常被称作是一款数据结构服务器(data structure serv ...
- 第三章 Git的入门 - 读书笔记
Android驱动月考3 第三章 Git的入门 - 读书笔记 对于Github,这是全世界最大的开源平台,你可以把你做的项目在这里开源,把你发现的一些新技术在这里开源,向全世界的开发者们分享,大家都彼 ...
- 《深入理解bootstrap》读书笔记:第一章 入门准备
一.bootstrap框架简介 Bootstrap是最流行的前端开发框架. 什么是框架:开发过程的半成品. bootstrap具有以下重要特性: (1)完整的CSS样式插件 (2)丰富的预定义样式表 ...
- 《Redis设计与实现》读书笔记
<Redis设计与实现>读书笔记 很喜欢这本书的创作过程,以开源的方式,托管到Git上进行创作: 作者通读了Redis源码,并分享了详细的带注释的源码,让学习Redis的朋友轻松不少: 阅 ...
- Unity Shader入门精要读书笔记(一)序章
本系列的博文是笔者读<Unity Shader入门精要>的读书笔记,这本书的章节框架是: 第一章:着手准备. 第二章:GPU流水线. 第三章:Shader基本语法. 第四章:Shader数 ...
- 《Github入门与实践》读书笔记 蟲咋先生的追求之旅(上)
<Github入门与实践>作者: [日] 大塚弘记 译者:支鹏浩/刘斌 简介 本书从Git的基本知识和操作方法入手,详细介绍了GitHub的各种功能,GitHub与其他工具或服务的协作 ...
- Redis设计与实现读书笔记——简单动态字符串
前言 项目里用到了redis数据结构,不想只是简单的调用api,这里对我的读书笔记做一下记录.原文地址: http://www.redisbook.com/en/latest/internal-dat ...
- redis入门笔记
redis入门笔记 参考redis实战手册 1. Redis在windows下安装 下载地址:https://github.com/MSOpenTech/redis/tags 安装Redis 1.1. ...
随机推荐
- WPF视频教程系列笔记
视频二:XAML基础 1.顶级元素 <Window></Window>,<Page></Page>,<Application></Ap ...
- Firebug 调试技巧之console API
console.log(object[, object, ...]) Writes a message to the console. You may pass as many arguments a ...
- php连接到数据库操作
<?php $result = mysql_query($sql); while($row = mysql_fetch_array($result)) { ?> 要写的内容代码,比如说Ht ...
- [javascript|基本概念]学习笔记
1/语法 a.区分大小写 b.标识符(首字符必须是字母/"_"/"$",其他可为字母/"_"/"$"/数字,不能用关键字 ...
- 《asp.net mvc实战》笔记
对于大部分复杂的项目来说,可能不会在Models文件夹中放置你的模型.一般来说,最好的方法是将你的领域模型放在独立的项目中.这样其他应用程序可以在使用该项目而不必依赖于你的MVC应用程序.我们建议你只 ...
- hdu 1284 钱币兑换问题 完全背包
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1284 递推公式:dp[i] = sum(dp[i], dp[i-C]) /* 钱币兑换问题 Time ...
- CityEngine2012(32位)安装
今天下午把CityEngine2012装好了,既然Esri大力推CityEngine作为其三维建模软件,那就学习一下,还好没花多长时间搞定破解版,以前装Erdas,南方CASS,AutoCAD那些该死 ...
- [GeekBand]C++高级编程技术(2)
本篇笔记主要分为两个主要部分,第一部分关于对象模型,第二部分是关于new和delete的更加深入的学习. 一.对象模型 关于vptr(虚指针)和vtbl(虚函数表) 只要用到了虚函数,对象中就会多一个 ...
- 【风马一族_Android】Android学习
如果是色彩盲,请自行收藏这个网站:Material Design Color Palette Generator 所有书上的UI部分扫一遍就行了,我相信现在还没有书按material design标准 ...
- 《Linux下sed命令的使用》
grep -v 关键字 文件 文件中的关键字给过滤掉 grep -v “^关键字” 文件 以关键字开头的给过滤掉 sed -e ‘/关键字/d’文件 输出时把关键字给删除掉 以/etc ...