redis 学习笔记1(安装以及控制台命令)

为何要学习这个?html

分布式技术必会,得益于redis的设计理念,内存数据库,epoll(多路复用)模型,单线程模型除去了锁和上下文切换,提升了性能.单线程保证执行顺序(轮询),在分布式环境下对于数据的一致性和惟一性应该是常常须要考虑到的.java

简单入门:linux

1.数据结构:(特性对比java 集合)redis

  1. 字符类型(string)
  2. 散列类型(hash)
  3. 列表类型(list 双向链表)
  4. 集合类型(set)
  5. 有序集合(zset)

2.功能:数据库

  1. 能够为每一个key设置超时时间;
  2. 能够经过列表类型来实现分布式队列的操做
  3. 支持发布订阅的消息模式

3.存储centos

默认支持16个数据库;能够理解为一个命名空间服务器

跟关系型数据库不同的点数据结构

  1. redis不支持自定义数据库名词
  2. 每一个数据库不能单独设置受权
  3. 每一个数据库之间并非彻底隔离的。 能够经过flushall命令清空redis实例面的全部数据库中的数据

经过  select dbid 去选择不一样的数据库命名空间 dbid的取值范围默认是0 -15app

4.key 最大521Mdom

 ===================================================================

 实战  使用: 环境  centos7.0  redis4.0.10 

安装

1.下载https://redis.io/download

2.解压  tar -zxvf  安装包

3.cd redis-4.0.10  

4.执行make 

  (若是出现 *** [adlist.o] Error 127  ,先安装gcc  命令是:yum install gcc)

 (若是出现zmalloc.h:50:31: 致命错误:jemalloc/jemalloc.h:没有那个文件或目录  执行命令:make MALLOC=libc)

   4.1 make test  (建议预先编译查看有没有问题)

    (若是出现错误You need tcl 8.5 or newer in order to run the Redis test  ,

参考:https://blog.csdn.net/luyee2010/article/details/18766911  )

   4.2 make install [PREFIX=/path]完成安装(指定安装到什么目录)

5(bin).启动    /redis-server ../redis.conf   后台运行

之后台进程的方式启动,修改redis.conf   daemonize =yes 

6客户端链接 (修改配置 redis.conf   bind 0.0.0.0)

./redis-cli -h 127.0.0.1 -p 6379 

7.bin 目录下的其余命令

Redis-server 启动服务

Redis-cli 访问到redis的控制台

redis-benchmark 性能测试的工具

redis-check-aof aof文件进行检测的工具

redis-check-dump  rdb文件检查工具

redis-sentinel  sentinel 服务器配置

==================================================================

通用命令,根据key 作相关增删改查以及设置key的失效时间 (http://www.redis.net.cn/order/3531.html)

各类数据结构的使用

字符类型

赋值和取值

SET key  value

setnx (用来作分布式锁)

GET key

递增数字(原子递增,默认为加1)
incr key

incrby key increment  递增指定的整数  eg: incrby shuaige 10

decr key   原子递减 

append key value   向指定的key追加字符串

strlen  key  得到key对应的value的长度

mget  key key..  同时得到多个key的value

mset key value  key value  key value …

setnx 

列表类型

list, 能够存储一个有序的字符串列表

LPUSH/RPUSH 从左边或者右边push数据

LPUSH/RPUSH key value value …

llen num  得到列表的长度

lrange key  start stop   ;  索引能够是负数, -1表示最右边的第一个元素

lrem key count value

lset key index value

LPOP/RPOP : 取数据

应用场景:能够用来作分布式消息队列

 

散列类型

不支持数据类型的嵌套(valu 是其余数据类型,好比list )

hset key field value

hget key filed

 

hmset key filed value [filed value …]  一次性设置多个值

hmget key field field …  一次性得到多个值

hgetall key  得到hash的全部信息,包括key和value

hexists key field 判断字段是否存在。 存在返回1. 不存在返回0

hincryby

hsetnx

hdel key field [field …] 删除一个或者多个字段

集合类型

set list 不同的点。 集合类型不能存在重复的数据。并且是无序的

sadd key member [member ...] 增长数据; 若是value已经存在,则会忽略存在的值,而且返回成功加入的元素的数量

srem key member  删除元素

smembers key 得到全部数据

sdiff key key …  对多个集合执行差集运算

sunion 对多个集合执行并集操做, 同时存在在两个集合里的全部值

有序集合

zadd key score member

zrange key start stop [withscores] 去得到元素。 withscores是能够得到元素的分数

若是两个元素的score是相同的话,那么根据(0<9<A<Z<a<z) 方式从小到大

 

 

redis的事务处理

 

MULTI 去开启事务

 

EXEC 去执行事务(注意,虽然开启了事务,可是若是执行的过程有问题的话,不会回滚!) 图中,先hset persin name tom  (persin是hash类型,开启事务 用zadd persin jinjian 确定报错,可是查询 get kkk 依然能够获得值)

过时时间

expire key seconds

ttl  得到key的过时时间

 

发布订阅

publish channel message

subscribe channel [ …]

 

 

数据淘汰策略

redis 内存数据集大小上升到必定大小的时候,就会施行数据淘汰策略。redis 提供 6种数据淘汰策略:
volatile-lru:从已设置过时时间的数据集(server.db[i].expires)中挑选最近最少使用的数据淘汰
volatile-ttl:从已设置过时时间的数据集(server.db[i].expires)中挑选将要过时的数据淘汰
volatile-random:从已设置过时时间的数据集(server.db[i].expires)中任意选择数据淘汰
allkeys-lru:从数据集(server.db[i].dict)中挑选最近最少使用的数据淘汰
allkeys-random:从数据集(server.db[i].dict)中任意选择数据淘汰
no-enviction(驱逐):禁止驱逐数据

 

数据储存方式格式

AOF和RDB

RDB 表示实时存储,AOF只记录执行的语句,启动的时候执行语句

默认RDB

 

#补充相关linux命令:

检测后台进程是否存在 ps -ef |grep redis
检测6379端口是否在监听 netstat -lntp | grep 6379

# redis 监控工具

redis-stat

相关文章
相关标签/搜索