为什么要学习这个?

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

简单入门:

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

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

2.功能:

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

3.存储

默认支持16个数据库;可以理解为一个命名空间

跟关系型数据库不一样的点

  1. redis不支持自定义数据库名词
  2. 每个数据库不能单独设置授权
  3. 每个数据库之间并不是完全隔离的。 可以通过flushall命令清空redis实例面的所有数据库中的数据

通过  select dbid 去选择不同的数据库命名空间 。 dbid的取值范围默认是0 -15

4.key 最大521M

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

实战  使用: 环境  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

redis 学习笔记1(安装以及控制台命令)的更多相关文章

  1. Redis学习笔记(三)常用命令整理

    Redis 常用命令 1.DEL key 删除key2.EXISTS key 检查key是否存在3.KEYS * 查看所有的key4.EXPIRE key seconds 设置key的过期时间5.TT ...

  2. MongoDB 学习笔记一 安装以及基础命令

    一.MongoDB安装配置 1.获取最新版本号: wget http://fastdl.mongodb.org/linux/mongodb-linux-x86_64-2.0.2.tgz 2.解压缩就可 ...

  3. redis学习笔记-02 list列表类型命令

    一.lpush key value1 value2 value3 value4(命令将一个或多个值插入到列表头部. 如果 key 不存在,一个空列表会被创建并执行 LPUSH 操作) lpush k1 ...

  4. Redis学习笔记(3)——Redis的命令大全

    Redis是一种nosql数据库,常被称作数据结构服务器,因为值(value)可以是 字符串(String), 哈希(Map), 列表(list), 集合(sets) 和 有序集合(sorted se ...

  5. Redis学习笔记(2)——Redis的下载安装部署

    一.下载Redis Redis的官网下载页上有各种各样的版本,如图 但是官网下载的Redis项目不正式支持Windows.如果需要再windows系统上部署,要去GitHub上下载.我下载的是Redi ...

  6. Redis学习笔记(1)- CentOS 6.4 安装Redis

    Redis学习笔记(1)- CentOS 6.4 安装Redis 2013.10.13     学习环境 vm 10.1 + 默认.新装的干净 CentOS 6.4  64BIT系统     准备 1 ...

  7. Redis学习笔记(二)-key相关命令【转载】

    转自 Redis学习笔记(二)-key相关命令 - 点解 - 博客园http://www.cnblogs.com/leny/p/5638764.html Redis支持的各种数据类型包括string, ...

  8. redis 学习笔记(6)-cluster集群搭建

    上次写redis的学习笔记还是2014年,一转眼已经快2年过去了,在段时间里,redis最大的变化之一就是cluster功能的正式发布,以前要搞redis集群,得借助一致性hash来自己搞shardi ...

  9. Redis学习笔记~目录

    回到占占推荐博客索引 百度百科 redis是一个key-value存储系统.和Memcached类似,它支持存储的value类型相对更多,包括string(字符串).list(链表).set(集合). ...

随机推荐

  1. 廖雪峰Java4反射与泛型-3泛型-7泛型和反射

    1.部分反射API是泛型 1.1获取反射API的泛型 部分反射API是泛型,如Class<T>是泛型 //如果使用Class,不带泛型,出现compile warning编译警告 Clas ...

  2. ServiceLoader

    先从业务场景分析,要完成数据的分析处理功能.根据数据的不同种类,先调用groovy或者python脚本等中的一种处理数据,处理完数据的后需要流程相同. 要支持处理能力的动态扩展,也就是框架完成后,可以 ...

  3. [UE4]利用取模运算达到循环遍历数组的目的

    X mod Y: 1.X<Y: X mod Y = X.计算记过永远都是等于X 2.X=Y:X mod Y = 0.重新回到数组第一个索引位置

  4. cobbler部署centos6与centos7系列

    cobbler部署centos6与centos7系列 转载自:http://www.jianshu.com/p/a4bed77bf40d 版权声明:完全抄自 http://www.jianshu.co ...

  5. Android仿淘宝头条滚动广告条

    之前我使用TextView+Handler+动画,实现了一个简单的仿淘宝广告条的滚动,https://download.csdn.net/download/qq_35605213/9660825: 无 ...

  6. CF235C Cyclical Quest(SAM)

    /* 统计串的出现次数显然可以在自动机上匹配出来即可 但是每次都挨个匹配的话会时间爆炸 那么考虑我们把串复制一份, 然后一起在后缀自动机上跑, 当我们匹配长度大于该串长度的时候强行失配即可 可能会有旋 ...

  7. html中header,footer分别固定在顶部和底部

    1 <!DOCTYPE html> 2 <html> 3 <head> 4 <title>page01</title> 5 <styl ...

  8. 编码,基本数据类型,str索引和切片,for循环

    1. 编码 1. 最早的计算机编码是ASCII. 美国人创建的. 包含了英文字母(大写字母, 小写字母). 数字, 标点等特殊字符!@#$% 128个码位 2**7 在此基础上加了一位 2**8 8位 ...

  9. 免安装版本Mysql配置

    免安装版本mysql配置如下:(本人使用的是5.6.42) 1. 解压后将/bin目录配置在系统变量中 2. 在mysql目录下新建my.ini文件配置如下信息: [mysqld] basedir=D ...

  10. python学习过程中的踩坑记录<若干,随时更新>

    问题1:python中print的连串输出与java不一样? 输入print(code +"+++"); --在代码中写入,界面未报错,但是告诉你不行 会报错,如图: 解决办法: ...