一篇博客搞定redis基础
redis简介
redis 一款高性能key-value数据库,实际上多用作缓存队列或者消息分发(celery),但是最常常被用来做缓存。
redis安装
源码安装
$ wget http://download.redis.io/releases/redis-2.8.17.tar.gz
$ tar xzf redis-2.8.17.tar.gz
$ cd redis-2.8.17
$ make
命令安装
$sudo apt-get update
$sudo apt-get install redis-server
#brew install redis
redis配置
常用配置项
daemonize no #是否已守护进程方式运行,yes是的,no不是,默认不是
pidfile /var/run/redis.pid 当守护进程模式运行时,redis会把pid写入pid文件
port 6379
bind 127.0.0.1
timeout 300
loglevel verbose #日志级别,默认为verbose,其他有debug、notice、warning
logfile stdout #日志输出方式,当守护进程模式运行时,输出到/dev/null
database 16 #数据库个数,默认16个
save 900 1 #900秒内有一次变更则同步数据到同步文件
dbfilename dump.rdb本 #地数据库名字,默认dump.rdb
dir ./ #指定本地数据库存放目录
salveof 1.1.1.1 30 #主从双机或者多机收,配置从方指定主方的地址和端口
masterauth 配置主方密码
requirepass xxxxxx #配置需要密码访问,xxxxxx是配置的密码
maxclients 128
maxmemory 1000000 #单位Bytes
appendonly no #指定是否更新操作后尽心日志记录,redis会默认的把异步数据写入磁盘,如果不开启该选项,可能导致掉电、时候一小段时间内的数据损失(数据永久化的一种方式)
appendfilename appendonly.aof #配置更新日志文件名
appendfsync everysec/always/no #配置更新日志记录,no表示等OS进行数据缓存到磁盘,everysec比奥斯每秒一次,always表示每次更新后手动调用fsync()写入数据到磁盘
redis数据类型
字符串
redis 127.0.0.1:6379> SET name "runoob"
OK
redis 127.0.0.1:6379> GET name
"runoob"
哈希
redis> HMSET myhash field1 "Hello" field2 "World"
"OK"
redis> HGET myhash field1
"Hello"
redis> HGET myhash field2
"World"
列表
redis 127.0.0.1:6379> lpush runoob redis
(integer) 1
redis 127.0.0.1:6379> lpush runoob mongodb
(integer) 2
redis 127.0.0.1:6379> lpush runoob rabitmq
(integer) 3
redis 127.0.0.1:6379> lrange runoob 0 10
1) "rabitmq"
2) "mongodb"
3) "redis"
redis 127.0.0.1:6379>
集合
String的无序集合
redis 127.0.0.1:6379> sadd runoob redis
(integer) 1
redis 127.0.0.1:6379> sadd runoob mongodb
(integer) 1
redis 127.0.0.1:6379> sadd runoob rabitmq
(integer) 1
redis 127.0.0.1:6379> sadd runoob rabitmq
(integer) 0
redis 127.0.0.1:6379> smembers runoob
1) "redis"
2) "rabitmq"
3) "mongodb"
有序集合
redis 127.0.0.1:6379> zadd runoob 0 redis
(integer) 1
redis 127.0.0.1:6379> zadd runoob 0 mongodb
(integer) 1
redis 127.0.0.1:6379> zadd runoob 0 rabitmq
(integer) 1
redis 127.0.0.1:6379> zadd runoob 0 rabitmq
(integer) 0
redis 127.0.0.1:6379> > ZRANGEBYSCORE runoob 0 1000
1) "mongodb"
2) "rabitmq"
3) "redis"
redis客户端使用
redis-cli -h 127.0.0.1 -p 6379 -a 'QWERasdf1234'
键值(KEY)
SET xxxx yyyy #xxxx就是key
DEL xxxx
DUMP xxxx
EXISTS xxxx
EXPIRE xxxx seconds
MOVE xxxx db(数字)
RANDOMKEY #随机返回一个key
RENAME xxxxx xxxxxxxxx #重命名key
TYPE xxxx 返回键值所存储的值的类型
字符串
SET key value #存储键值对应的值
GET key
GETRANCE key start end #返回字符串中的子字符串,类似于MySQL的SUBSTRING
STRLEN #返回key存储的字符串长度
GETSET key value #获取key的旧值,设置key的新值为value
MGET key1 key2
APPEND key value 追加value到源value的末尾
MSET key value key value #设置多个key-value的键值对
哈希
像存python的字典,一个key下面对应的是field和value
HMGET key filed field2
HSET key field value #设置key中的字段和值
HGET key field 获取key中的某字段的值
HDEL key field field1 ... #删除key中的某个或某些字段
HEXISTS key field #判别某个key中的某个字段是否存在
HKEYS key #获取hash表中的所有字段
HLEN key #获取hash表中的字段数量
HMSET key field1 value1 field2 value2
HVALS key #获取key中所有值
HSCAN key cursor [match pattern] [COUNT count] #迭代键值对
列表
列表都可以设置timeout,可以当做队列或栈
BLPOP key1 key2 ... #获取列表的第一个元素
BRPOP key1 key2 ... #获取列表的最后一个元素
LPOP key #移出列表的第一个元素
LPUSH key value key value #插入一个或多个值进入列表
LLEN key #获取列表长度
LRANGE key start end #获取列表指定范围的元素
LREM key count value #移出列表元素
LSET key index value #设置列表中的某个值
集合和有序集合
SADD key value1 value2 #集合中增加成员
SCARD key #集合的成员数
SREM key value1 value2 #移除集合中的成员
SRANDMEMBER key count 获取集合中的一个或多个随机数
SDIFF key1 key2 #求差集
SUNION key1 key2 # 求并集
SISMEMBER key value #判断key中是否有value
ZADD key score1 value1 score2 value2 # score1 是序号
ZREM key value1 #删除key下的某个value
ZRANGE key start end #获取key中的start到end范围的value
ZCARD key #获取成员数
redis的用作缓存或消息队列
PUBLISH channel message #发布消息
PSUBSCRIBE pattern #订阅一个或多个给定模式的频道
SUBSCRIBE #订阅一个或多个频道的信息
UNSUBSCRIBE #退订频道


redis的事务机制
每一条命令都是原子性的,每个事务集合不是原子性的。
事务集合
MULTI
SET A A
SET B B
...
EXEC
事务命令
DISCARD取消事务
MULTI+EXEC 开始和执行
WATCH key 监控key
UNWATCH 取消WATCH对所有可以的监控
redis连接测试
redis-cli
auth xxxxxx 密码认证
PING 测试服务运行与否,运行回PONG
QUIT
SELECT X 切换数据库
服务器与备份
INFO 查看服务器与备份
CLIENT LIST 列出客户端
TIME 获取当下时间
FLUSHALL/FLUSHDB 删除所有/当前数据库所有key
MONITOR调试用
SAVE 保存
一篇博客搞定redis基础的更多相关文章
- 鸿蒙内核源码分析(VFS篇) | 文件系统和谐共处的基础 | 百篇博客分析OpenHarmony源码 | v68.01
子曰:"质胜文则野,文胜质则史.文质彬彬,然后君子." <论语>:雍也篇 百篇博客系列篇.本篇为: v68.xx 鸿蒙内核源码分析(VFS篇) | 文件系统和谐共处的基 ...
- 鸿蒙内核源码分析(内存汇编篇) | 谁是虚拟内存实现的基础 | 百篇博客分析OpenHarmony源码 | v14.14
百篇博客系列篇.本篇为: v14.xx 鸿蒙内核源码分析(内存汇编篇) | 谁是虚拟内存实现的基础 | 51.c.h .o 内存管理相关篇为: v11.xx 鸿蒙内核源码分析(内存分配篇) | 内存有 ...
- 鸿蒙内核源码分析(汇编基础篇) | CPU在哪里打卡上班? | 百篇博客分析OpenHarmony源码 | v22.01
百篇博客系列篇.本篇为: v22.xx 鸿蒙内核源码分析(汇编基础篇) | CPU在哪里打卡上班 | 51.c.h .o 硬件架构相关篇为: v22.xx 鸿蒙内核源码分析(汇编基础篇) | CPU在 ...
- 鸿蒙内核源码分析(文件系统篇) | 用图书管理说文件系统 | 百篇博客分析OpenHarmony源码 | v63.01
百篇博客系列篇.本篇为: v63.xx 鸿蒙内核源码分析(文件系统篇) | 用图书管理说文件系统 | 51.c.h.o 文件系统相关篇为: v62.xx 鸿蒙内核源码分析(文件概念篇) | 为什么说一 ...
- 鸿蒙内核源码分析(定时器篇) | 哪个任务的优先级最高 | 百篇博客分析OpenHarmony源码 | v31.02
百篇博客系列篇.本篇为: v31.xx 鸿蒙内核源码分析(定时器篇) | 哪个任务的优先级最高 | 51.c.h .o 本篇说清楚定时器的实现 读本篇之前建议先读鸿蒙内核源码分析(总目录)其余篇. 运 ...
- 鸿蒙内核源码分析(内存规则篇) | 内存管理到底在管什么 | 百篇博客分析OpenHarmony源码 | v16.02
百篇博客系列篇.本篇为: v16.xx 鸿蒙内核源码分析(内存规则篇) | 内存管理到底在管什么 | 51.c.h .o 内存管理相关篇为: v11.xx 鸿蒙内核源码分析(内存分配篇) | 内存有哪 ...
- 鸿蒙内核源码分析(挂载目录篇) | 为何文件系统需要挂载 | 百篇博客分析OpenHarmony源码 | v65.01
百篇博客系列篇.本篇为: v65.xx 鸿蒙内核源码分析(挂载目录篇) | 为何文件系统需要挂载 | 51.c.h.o 文件系统相关篇为: v62.xx 鸿蒙内核源码分析(文件概念篇) | 为什么说一 ...
- 鸿蒙内核源码分析(索引节点篇) | 谁是文件系统最重要的概念 | 百篇博客分析OpenHarmony源码 | v64.01
百篇博客系列篇.本篇为: v64.xx 鸿蒙内核源码分析(索引节点篇) | 谁是文件系统最重要的概念 | 51.c.h.o 文件系统相关篇为: v62.xx 鸿蒙内核源码分析(文件概念篇) | 为什么 ...
- 鸿蒙内核源码分析(文件概念篇) | 为什么说一切皆是文件 | 百篇博客分析OpenHarmony源码 | v62.01
百篇博客系列篇.本篇为: v62.xx 鸿蒙内核源码分析(文件概念篇) | 为什么说一切皆是文件 | 51.c.h.o 本篇开始说文件系统,它是内核五大模块之一,甚至有Linux的设计哲学是" ...
随机推荐
- layui框架遇到时间控件在搜索之后再次点击出现异常的问题
原因:使用jquery赋值html代码问题 解决方法:使用js代码处理即可,如: document.getElementsByTagName('tbody')[0].innerHTML = 自己的ht ...
- java rpc
一.简介 Hessian和Burlap是由Caucho Technology提供的基于HTTP协议的轻量级远程服务解决方案.他们都致力于借助尽可能简单那的API和通信协议来简化Web服务. He ...
- Android中利用C++处理Bitmap对象
相信有些Android&图像算法开发者和我一样,遇到过这样的状况:要对Bitmap对象做一些密集计算(例如逐像素的滤波),但是在java层写循环代码来逐像素操作明显是不现实的,因为Java代码 ...
- PO页面对象模式封装
PO的主要价值体现在对界面交互细节的封装,这样可以使测试案例可以更关注与业务而非界面细节,提高测试案例的可读性. 以传统的登陆页面为例實現PO模式,因为每个用例中都需要登陆. 其中需要使用Page ...
- [转]POI实现读写Excel2007完整示例
http://blog.csdn.net/little_stars/article/details/8210532 流程:(跟jxl相似,只是读取逻辑有点不同) 跟jxl的两处主要区别: 1.读取和写 ...
- CorelDRAW中关于锁定与解锁对象的操作
在编辑复制的图形时,有时为了避免对象受到操作的影响,可以使用“锁定与解锁对象”功能键对已经编辑好的对象进行锁定.被锁定的对象将不能进行任何编辑操作,本教程将详解CorelDRAW中关于锁定与解锁对象的 ...
- 在mvc4中多语言建站的实例
环境:vs2012 asp.net mvc4. 实现方式:resource 资源文件,根据路由规则中Lang参数来判断载入哪种语言方式 在网上找到了相关资料,顺便自己做了个练习,新建工程之类的步骤就免 ...
- Java适配器模式的简单应用
对于刚从工厂生产出来的商品,有些功能并不能完全满足用户的需要.因此,用户通常会对其进行一定的改装工作.编写程序为普通的汽车增加GPS定位功能,借此演示适配器模式的用法. 思路分析: 这个问题的需求是, ...
- Java 流(Stream)、文件(File)和IO -- Java ByteArrayOutputStream类
Java ByteArrayOutputStream类 字节数组输出流在内存中创建一个字节数组缓冲区,所有发送到输出流的数据保存在该字节数组缓冲区中.创建字节数组输出流对象有以下几种方式. 下面的构造 ...
- 第7章 Ajax数据爬取
Ajax 简介 Ajax 分析方法 Ajax 结果提取