redis使用笔记1

1. 下载安装

  • 下载
    • 方式:wget http://download.redis.io/releases/redis-5.0.5.tar.gz(2019-6-19最新);
  • 解压
    • tar -zxvf redis-5.0.5.tar.gz
  • 移动至/usr/local目录下
    • mv ./redis-5.0.5 /usr/local/redis
  • 进入目录
    • cd /usr/local/redis
    redis目录结构.png
  • 编译
    • make
    • make后报错如下:
      编译报错.png
    • 解决方式参考:https://blog.csdn.net/wlwlwlwl015/article/details/50444672
    • 解决make报错:安装gcc
      • yum -y install gcc automake autoconf libtool make
        安装gcc成功.png
    • 重新编译
      • make
        编译成功.png

        注意,如果编译失败则将redis文件夹删除重新解压后编译。
  • 编译测试
    • 如编译成功后提示,执行make test
    • make test报错


      编译测试报错.png
    • 解决make test报错
      • wget http://downloads.sourceforge.net/tcl/tcl8.6.1-src.tar.gz
      • tar xzvf tcl8.6.1-src.tar.gz -C /usr/local/
      • cd /usr/local/tcl8.6.1/unix/
      • ./configure
      • make
      • make install
    • 再次make test
      • 大部分[ok],有警告:


        编译测试结果.png

        (原因不清楚,继续往下= =!)

  • 安装
    • make install
    屏幕快照 2019-06-19 下午2.43.29.png

    成功!

    • redis-server redis服务器
    • redis-cli redis命令行客户端
    • redis-benchmark redis性能测试工具
    • redis-check-aof AOF文件修复工具
    • redis-check-rdb RDB文件检索工具

2. 配置

  • 复制配置文件到/etc/redis目录
    cp /usr/local/redis/redis.conf /etc/redis
  • 配置文件说明
    参考:https://www.cnblogs.com/tmpt/p/redis_conf_detail_annotation.html
  • 主要配置
    • bind 127.0.0.1 # 绑定ip,如果需要远程访问,可注释,或绑定多个真实ip;
    • port 6379 # 端口;
    • daemonize yes # 以守护进程运行,不会在命令行阻塞,类似于服务;
    • dbfilename dump.rdb # 数据文件;
    • dir /var/lib/redis # 数据文件存储路径;
    • logfile /var/log/redis/redis-server.log # 日志文件;
    • database 16 # 数据库,默认16个;
    • slaveof # 主从配置时使用;

3. 主要命令

  • 服务器端:
    • 启动:
      1. cd /usr/local/bin;./redis-server &
      2. redis-server /etc/redis/redis.conf # 加载指定的配置文件启动
    • 停止:

      kill -9 pid

  • 客户端:
    • 启动:

      redis-cli

    • 测试:

      ping

    • 切换数据库:

      select n # 默认是0,即第一个数据库

4. 操作

redis数据结构为key-value形式,key为字符串,不可重复。值共有五种类型:

  • 字符串string
  • 列表list
  • 哈希hash
  • 集合set
  • 有序集合zset

4.1 键命令

  • 查找键
    • keys pattern # pattren支持正则表达式
  • 查看键是否存在
    • exists key # 返回1表示在,0表示不在
  • 查看键类型
    • type key # 查看值得类型
  • 删除键
    • del key1 key2... # 删除键
  • 设置键过期时间
    • expire key seconds # 设置小于等于0的数相当于删除键
  • 查看键有效时间
    • ttl key # -1表示永久有效,但expire key -1只能删除键,不能当成是设置永久有效,可以通过set key value来让有有效时间的key永久有效。setex key seconds value中seconds只能为正整数

4.2 字符串操作

redis中字符串类型value最多可以容纳512M大小数据的长度。
注意下面命令中key和value不加引号也是可以的。

  • 添加/修改
    • set key value # 键没有则添加,键存在则修改
    • setex key seconds value # 设置过期时间,单位:秒
    • mset key1 value1 key2 value2 ... # 一次设置多个键值
    • append key value # 在key对应原value后面拼加新的字符串作为新value。如果key不存在,则添加key-value
  • 获取
    • get key
    • mget key1 key2 ... # 根据多个键获取多个值

4.3 hash操作(值类型为string)

  • 添加/修改
    • hset key field value # 设置单个属性
    • hset/hmset key field1 value1 field2 value2... # 设置多个属性
  • 获取
    • hkeys key # 获取指定键所有属性
    • hget key field # 获取单个属性的值
    • hmget key field1 field2... # 获取多个属性的值,注意获取多个时只能hmget,hget不行
    • havls key # 获取所有属性的值
  • 删除
    • del key # 删除hash键
    • hdel key field1 field2... # 删除key的多个属性

4.4 list操作(元素类型为string)

按照插入顺序排序

  • 添加
    • lpush key value1 value2 ... # 在左侧插入数据
    • rpush key value1 value2 ... # 在右侧插入数据
    • linsert key before|after value value1, value2... # 在元素value左/右插入元素
  • 获取
    • lrange key start stop # 获取从start到stop索引的所有元素,索引可以为负数,-1表示最后一个元素
  • 设置
    • lset key index value # 设置指定索引位置的元素
  • 删除
    • lrem key count value # 将列表前count次出现的value删除,count>0 从头到尾删除,count<0 从尾到头删除,count=0 删除全部

4.5 set操作(元素类型为string)

set类型没有修改操作
元素具有唯一性,不重复(重复的加不进去)

  • 添加
    • sadd key value1 value2
  • 获取
    • smembers key
  • 删除
    • srem key value1 # 删除指定元素

4.6 zset操作(元素类型为string)

元素唯一,不重复,有序

  • 添加
    • zadd key score1 value1, score2 value2 ... # score表示权重,排序规则用
  • 获取
    • zrange key start stop # 获取指定范围内的元素
    • zrangebyscore key min max # 返回score值在min到max之间的元素
    • zscore key member # 返回元素member中的score值
  • 删除
    • zrem key member1 member2 ... # 删除指定元素
    • zremrangebyscore key min max... # 删除权重在min到max直接的元素
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 159,117评论 4 362
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 67,328评论 1 293
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 108,839评论 0 243
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 44,007评论 0 206
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 52,384评论 3 287
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 40,629评论 1 219
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 31,880评论 2 313
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 30,593评论 0 198
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 34,313评论 1 243
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,575评论 2 246
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 32,066评论 1 260
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,392评论 2 253
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 33,052评论 3 236
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 26,082评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,844评论 0 195
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 35,662评论 2 274
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 35,575评论 2 270

推荐阅读更多精彩内容