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 保存

最新文章

  1. 版本控制工具比较-CVS,SVN,GIT
  2. OpenNLP:驾驭文本,分词那些事
  3. [deviceone开发]-一个简单的表单示例
  4. win10 install JDK&&JRE
  5. Android 工程师如何快速学会web前段
  6. 自动获取socket链接状态
  7. android 监听软键盘的收起与打开
  8. 怎样用ZBrush雕刻人体造型
  9. Volley(一 )—— 框架简介
  10. hdu 4588 Count The Carries
  11. lintcode: 有效的括号序列
  12. Throwing cards away I
  13. 将已有项目导入Gitlab
  14. 最新VMware Workstation 10注册码,绝对可用!
  15. android L新控件RecyclerView具体解释DeMo
  16. PyQt设计流程
  17. CommonJS,AMD,RequireJS的区别
  18. 深入浅出Java MVC(Model View Controller) ---- (JSP + servlet + javabean实例)
  19. js实现获取对象key名
  20. Servlet之监听器(Listener)

热门文章

  1. 机器学习——大数据与MapReduce
  2. c#实现word,excel转pdf代码及部分Office 2007文件格式转换为xps和pdf代码整理
  3. asp.net MVC中防止跨站请求攻击(CSRF)的ajax用法
  4. Linux 系统磁盘满处理方法
  5. javascript的console命令
  6. python之文件目录和路径
  7. linux如何通过脚本来修改用户的密码?脚本自动化修改用户密码?
  8. LeetCode_Maximum Subarray | Maximum Product Subarray
  9. SpringMVC由浅入深day02_9RESTful支持
  10. linux定时任务cron配置[转]