redis介绍

Redis特性

1.速度快

官方称可以达到10W的qps

将数据存储在内存中

由C语言编写

线程模型为单线程

2.持久化

Redis将所有数据保持在内存中,并异步更新到磁盘上

3.支持多种数据结构

String

Hash

List

Set

ZSet

BitMap(位图)

HyperLogLog(超小的内存唯一值计数器)

GEO(地理信息定位)

4.支持多种编程语言

Java

Python

Ruby

Lua

NodeJS

5.功能丰富

支持类MQ的发布订阅功能

支持Lua脚本

支持事务

支持pipeline

6.非常简单

Redis 3.0的单机核心代码只有2300行代码

单线程模型

7.支持主从复制

8.高可用、分布式

在 V2.8 中支持Redis Sentinel

在 V3.0 中支持Redis Cluster

Redis启动方式

1.最简启动:使用默认配置

./redis-server

2.动态参数启动

./redis-server --port 6379

3.指定配置文件启动

./redis-server configPath

生产环境推荐此方式:单机多实例配置

Redis基础常用配置

1.daemonize

是否是守护进程(yes/no),设置为yes时,Redis会把启动日志输出到日志文件中

2.port

Redis端口号

3.logfile

log 输出到标准设备,logs 不写文件,输出到空设备,/deb/null

4.dir

数据库存放路径

Redis数据结构与内部编码

string :raw , int , embstr

int的范围相当于Java中的long,为8个字节长整型

字符长度少于等于39个长度时为embstr

字符长度超过39个长度时为raw,比起embstr,是不连续的

hash      :hashtable(哈希表) , ziplist(压缩列表)

hash-max-ziplist-entries 512

hash-max-ziplist-value 64

当hash结构的field数量小于等于512并且每个field与value的长度小于等于64时,hash会采用ziplist

list          :linkedlist(双向循环链表) , ziplist(压缩列表)

list-max-ziplist-entries 512

list-max-ziplist-value 64

当list结构的元素数量小于等于512并且每个item的长度小于等于64时,list会采用ziplist

set          :hashtable(哈希表) , intset(整数集合)

set-max-intset-entries 512

当set结构的元素数量小于等于512时候,set将采用intset

zset        :skiplist(跳跃列表) , ziplist(压缩列表)

zset-max-ziplist-entries 512

zset-max-ziplist-value 64

当zset结构的元素数量小于等于512并且每个member的长度小于等于64时,zset会采用ziplist

当key的数量比较少时,Redis采取以时间换空间的策略

当key的数量增多时,Redis采取以空间换时间的策略

查看内部编码的方式 object encoding ${key}

ziplist的特点

连续内存

读写有指针位移,最坏O(n2)

新增删除有内存重分配

Redis单线程为什么速度还那么快

纯内存

使用epoll创建非阻塞IO

由于是单线程,因此避免了线程切换和竞态消耗

Redis单线程需要注意的点

一次只会运行一条命令

拒绝长命令/慢命令

keys

flushall

flushdb

slow lua script

mutil/exec

operate

Redis配置生效方法

修改config配置文件,然后重启redis服务

config set configName configValue  (前提需要当前配置支持动态配置)

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 206,482评论 6 481
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 88,377评论 2 382
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 152,762评论 0 342
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 55,273评论 1 279
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 64,289评论 5 373
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,046评论 1 285
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,351评论 3 400
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,988评论 0 259
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 43,476评论 1 300
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,948评论 2 324
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,064评论 1 333
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,712评论 4 323
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,261评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,264评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,486评论 1 262
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,511评论 2 354
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,802评论 2 345

推荐阅读更多精彩内容

  • 参考来源 Redis的内存优化 Redis所有的数据都在内存中,而内存又是非常宝贵的资源。对于如何优化内存使用一直...
    秦汉邮侠阅读 1,280评论 0 2
  • Redis的内存优化 声明:本文内容来自《Redis开发与运维》一书第八章,如转载请声明。 Redis所有的数据都...
    meng_philip123阅读 18,874评论 2 29
  • 声明:本文内容来自《Redis开发与运维》一书第八章,如转载请声明。Redis所有的数据都在内存中,而内存又是非常...
    yoqu阅读 1,491评论 0 2
  • Redis 作为一种 KV 缓存服务器,有着极高的性能,相对于 Memcache,Redis 支持更多种数据类型,...
    为爱放弃一切阅读 517评论 0 8
  • #按需配置 #加载个性化的配置 #include /path/local.conf #按需修改 #绑定的ip地址,...
    ninedreams阅读 713评论 0 1