redis实践

what

Redis 是一个开源(BSD 许可)的,内存中的数据结构存储系统, 它可以用作数据库、缓存和消息中间件。拥有丰富的支持主流语言的 客户端,C、C++、Python、Erlang、R、C#、Java、PHP、Objective- C、Perl、Ruby、Scala、Go、JavaScript。

数据结构丰富

Redis 虽然也是键值对数据库,但是和 Memcached 不同的是, Redis 支持多种类型的数据结构,不仅可以是字符串,同时还提供散 列(hashes),列表(lists),集合(sets),有序集合(sorted sets) 等数据结

官网

wget http://download.redis.io/releases/redis-3.2.3.tar.gz tar -zxvf redis-3.2.3.tar.gz

mv redis-3.2.3 redis cd redis yum install gcc tcl make test make MALLOC=libc && make install cd utils/ ./install_server.sh

安装配置

配置自启动

cp /opt/redis-3.2.3/utils/redis_init_script /etc/init.d/redisd

在启动脚本开头添加如下两行注释以修改其运行级别:

1
2
3
4
#!/bin/sh
# chkconfig: 2345 90 10
# description: Redis is a persistent key-value database
#

命令

  • 设置为开机自启动服务器
    • chkconfig redisd on
  • 打开服务
    • service redisd start
  • 关闭服务
    • service redisd stop
    • /usr/sbin/redis-server /etc/redis.conf

使用

进入命令行 rediscli

命令使用

  • 切换数据库
  • key操作
    • KEYS pattern
    • EXISTS key
    • EXPIRE key seconds
    • MOVE key db
    • TTL key
    • TYPE key
  • string操作
    • SET key value [EX seconds] [PX milliseconds] [NX|XX]
      • EX 设置过期时间,秒,等同于 SETEX key seconds value
      • PX 设置过期时间,毫秒,等同于 PSETEX key milliseconds value
      • NX 键不存在,才能设置,等同于 SETNX key value
      • XX 键存在时,才能设置
    • GET key
    • APPEND key value
    • STRLEN key
    • INCR key
    • INCRBY key increment
    • DECR key
    • DECRBY key decrement
    • GETRANGE key start end
    • SETRANGE key offset value
    • SETEX key seconds value
    • SETNX key value
    • MGET key [key ...]
    • MSET key value [key value ...]
    • MSETNX key value [key value ...]
  • list 操作
    • LPUSH key value [value ...]
    • RPUSH key value [value ...]
    • LRANGE key start stop
    • LPOP key
    • RPOP key
    • LINDEX key index
    • LLEN key
    • LREM key count value
    • LTRIM key start stop
    • RPOPLPUSH source destination
    • LSET key index value
    • LINSERT key BEFORE|AFTER pivot value
  • SET操作
    • SAD 增加集合 sadd myset xixi haha
    • SREM 删除
    • SPOP 无序弹出集合,适用无放回抽奖
    • SMEMBERS 列出集合内容
    • smove 移动
    • sdiff 求差集
    • sinter 求交集,微博共同关注
    • sunion 并集
    • SISMEMBER key member
    • SCARD key
  • sorted set 操作
    • zadd 增加有序集合 sorted set,使用排行榜场景
    • zrange 返回有序集key中,指定区间内成员 升序
    • zrevrange 按分数递减
    • zincrby 增加分数
    • zrem 指定删除某个元素
    • zremrangebyscore 按分数范围删除
    • zscore
    • zcard
    • zrank
  • hash散列操作
    • hget
    • hgetall
    • hkeys
    • hvals
    • hmset
    • hsetnx
    • hincrby

持久化

  • rdb 快照
    • 关闭redis-cli -> CONFIG SET save ""
    • 手动触发redis-cli-> SAVE
    • 清空FLUSHALL
  • aof 保留操作日志,两个都开启,优先使用这个
    • appendfsyc always每条持久化
    • appendfsyc everysec 每秒持久化
    • appendfsnc no操作系统自处理
    • 优缺点 命令去掉用避免被全干掉
  • auto-aof

主从复制

  • 从服务器配置 slaveof 192.168.1.1 6379

哨兵机制 redis-sentinel

redis集群

参考

  • https://mp.weixin.qq.com/s/TR8oe7c1SlOrk78untXdOA
Juforg wechat
欢迎您扫一扫上面的微信公众号,订阅我的博客!