Redis

一.常识

  • 磁盘
  1. 寻址: ms毫秒
  2. 带宽: IO流 G/M
  • 内存
  1. 寻址:ns纳秒 磁盘比内存慢了十万倍
  2. 带宽:很大
    -磁盘和磁道,扇区 一扇区512Byte带来一个成本变大:索引
    操作系统,无论你读取多少,都是至少4K从磁盘拿
  • 数据库:表很大性能下降?如果表有索引增删改变慢,查询速度 1个或少量依然很快,并发大的时候会受硬盘带宽影响速度。

二.安装

1.https://www.cnblogs.com/Ai-Hen-Jiao-zhi/p/10127731.html
2.yum install wget
3.mkdir soft > wget http:------------------------------------->tar -zxvf
4.cd redis src 看 readme.md
5.make (编译工具)
---yum isstall gcc
---make distclean

  1. make
  2. cd redis/src目录下,会生成可执行的程序(redis-server)
    8.make install PREFIX=/opt/fengguoxing/redis6(将src中的可执行程序复制到该目录的bin下)
redis-benchmark  redis-check-aof  redis-check-rdb  redis-cli  redis-sentinel  redis-server

9.将redis变成服务 (我们不需要每次都去软件的目录下去./server.sh)/etc/profile

export REDIS_HOME=/opt/fengguoxing/redis6
export PATH=$PATH:$REDIS_HOME/bin
source /etc/profile

10.到 redis的utils目录下执行 ./install_server.sh(我们可以反复操作此步骤生成多个实例)
a 一个物理机中可以有多个redis实例(进程) 通过port区分
b可执行程序就一份在目录,但是内存中未来的多个实例需要各自的配置文件,持久目录资源
c service redis_6379 start/stop/status > etc.init.d /etc/init.d目录下有 redis_6389(包含该服务的所有信息)
d脚本还会帮助启动
10 ps -fe | grep redis

root       85990       1  0 13:42 ?        00:00:00 /opt/fengguoxing/redis6/bin/redis-server 127.0.0.1:6379
root       86270       1  0 13:55 ?        00:00:00 /opt/fengguoxing/redis6/bin/redis-server 127.0.0.1:6380

Please select the redis port for this instance: [6379] 
Selecting default: 6379
Please select the redis config file name [/etc/redis/6379.conf] 
Selected default - /etc/redis/6379.conf
Please select the redis log file name [/var/log/redis_6379.log] 
Selected default - /var/log/redis_6379.log
Please select the data directory for this instance [/var/lib/redis/6379] 
Selected default - /var/lib/redis/6379
Please select the redis executable path [/opt/fengguoxing/redis6/bin/redis-server] 

三.Redis快的原因:

QQ截图20200609153236.png

内核采用多路复用:
1.用户空间create epoll 返回epoll文件描述符,一个连接进来,epoll准备一个共享空间。1000个连接注册到红黑树,如果有数据到了,就会将数据放到链表中,用户空间调用ctl(add delet) wait()等待事件,如果链表中有数据,结束阻塞,取出数据,


image.png

三.基础知识

redis有16个库

2.和memcached的比较

三.数据类型介绍

1. string

set k1 hello nx(不存在就创建:分布式)
set k2 xx xx(更新操作)
append k1 "word":对k1进行追加 hello word
setrange k1 6  fgx: hello fgx
type k1 :string
getset k1 ma :返回hello 同时将k1改成ma
msetnx k1 a k2 b(原子操作)
mget k1 k2: a b

1.2 bitmap:字节:一个字节8位>00000000 00000000:很重要

setbit d 1 1 :01000000
setbit d 7 1 :01000001
setbit d 9 1 :01000001 01000000
get d:"A@"
2:bitpos d 1 0 1:(integer) 1        
   1:我们要找的元素值.
   0: 代表开始位置的字节 
   1:代表开始结束的字节 
   1:代表整个位图中1第一次出现的位置

3.bitcount(整个位图统计1的次数):
  bitcount  d 0 1 :(integer) 3       
  统计0到1个字节中 1在整个位图出现的次数

4.bitop(与或运算):
   bitop and andkey k1 k2(有0则为0,全1则为1)
   bitop or  orkey k1 k2(有1则为1,全0则为0)

需求1:统计用户全年登录天数,其随机窗口
分析:有两个固定的数值 一年的天数,就算按400天来算,一个二进制位代表一天,400/8=50,所以50个字节可以最大限度记录用户的登录天数

setbit feng 1 1
setbit feng 364 1
strlen feng : (integer) 46 (用46个字节记录了该用户全年的登录记录)

需求2:统计用户最后两周登录的天数

bitcount feng -2 -1 : (integer) 1 :最后16天

需求3:JD618做活动,凡是登录就送一份礼物,备货多少,假设有2亿用户(僵尸用户/冷热用户)
分析:比如6号-7号登录次数,去重,位图进行旋转,用户映射到二进制位上

127.0.0.1:6379> setbit 20200606 1 1 
(integer) 0
127.0.0.1:6379> setbit 20200607 1 1
(integer) 1
127.0.0.1:6379> setbit 20200607 7 1 :20200607 代表日期,7代表用户 ,1代表登录
(integer) 1
127.0.0.1:6379> bitop or deskkey 20200606 20200607
(integer) 1
127.0.0.1:6379> bitcount deskkey 0 -1
(integer) 2
127.0.0.1:6379> 


  1. list
lpush k1 a b c d e f(从左边放入)
rpush k2 a b c d e f(从右边放入)
lpop k1 : "f"
LRANGE k1 0 -1(正负索引) 0到最后的元素
LINDEX k1 2 : "d"
lpush k3 1 a 2 a 3 a 4 c 5 a 6 d
LREN k3 2(移除两个) a
LINSERT k3 after 6 a 
LINSERT k3 before 6 a 

3.hash:

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