Redis基本安装和配置详解

作者:袖梨 2022-06-29

Redis基本安装和配置详解


1.安装

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

编译安装:

tar xf redis-3.2.3.tar.gz
cd redis-3.2.3
make && make install

配置:

mkdir /etc/redis 建立配置文件存放目录
cp -a redis.conf /etc/redis/6379.conf 复制配置文件
cp -a utils/redis_init_script /etc/init.d/redis 复制启动脚本
mkdir -p /home/redis-home 建立数据存放目录
ip=`ip addr show eth0 | grep eth0 | grep inet | cut -d" " -f 6 | cut -d"/" -f 1` 获取接口ip
sed -i "s/^bind.*$/bind 127.0.0.1 $ip/" /etc/redis/6379.conf 配置bind绑定ip地址
sed -i 's/^daemonize no/daemonize yes/' /etc/redis/6379.conf 配置开机启动为yes
sed -i 's/^dir .//dir /home/redis-home/' /etc/redis/6379.conf 配置数据存放文件为建立的redis-home目录
sed -i '3i# chkconfig: - 86 14n# descript: redis init script' /etc/init.d/redis 配置启动文件加入chkconfig描述

启动:

  chkconfig --add redis 配置reids加入开机启动
chkconfig redis on 配置redis开机启动
service redis start 启动redis
dbsize 测试redis是否正常工作  
service redis stop 关闭redis

2.redis.conf

daemonize yes    是否以后台程序运行,默认no
pidfile /var/run/redis.pid    后台运行,需要制定pid
port 6379    默认监听端口6379
timeout 0    链接超时时间
loglevel notice    日志等级,debug,verbose,notice,warning
logfile ""    输出日志文件,'stdout'标志输出,如果以后台运行,输出到/dev/null
# syslog-enabled no    是否输出到系统日志
# syslog-ident redis    系统日志标识符
# syslog-facility local0   
databases 16    设置数据库数目
save 900 1
save 300 10
save 60 10000    过了900s并且有1个key发生改变,就会触发save动作
rdbcompression yes    存储数据时是否压缩数据,默认yes
dbfilename dump.rdb    保存dump数据的文件名
dir ./    工作目录,必须是目录而不是文件
slaveof     slaveof把一个redis实例设置为另一个redis的从库
masterauth    
slave-serve-stale-data yes    
# requirepass foobared    指定需要密码登录
# maxclients 10000    连接最大数限制,建议不限制
# maxmemory     使用最大内存限制,建议不限制
# maxmemory-policy noeviction    默认配置:volatile-lru:使用lRUnning算法来删除过去的set ,allkeys-lru 删除任何遵循LRU算法的key,volatile-random,随机删除过期的set中的key,allkeys-random,随机删除一个key,volatile-ttl,删除最近即将过期的key.noeviction,根本不过期,写操作报错
appendonly no    开启该模式后,会把每一个操作记录在appendonly.aof文件中,在redis重启时被读取到内存中重新构建数据库
appendfilename "appendonly.aof"   
# appendfsync always
appendfsync everysec
# appendfsync no    no:不fsync, 只是通知OS可以flush数据了,具体是否flush取决于OS.性能更好.
always: 每次写入append only 日志文件后都会fsync . 性能差,但很安全.
everysec: 没间隔1秒进行一次fsync. 折中
no-appendfsync-on-rewrite no   
auto-aof-rewrite-percentage 100
auto-aof-rewrite-min-size 64mb    append only 文件的自动重写,为0时关闭重写,
slowlog-log-slower-than 10000    负数则关闭slow log,0则会导致每个命令都被记录
slowlog-max-len 128   
REDIS CLUSTER  

redis基本数据类型

String redis最基本的类型,可以是任意类型的字符串,也可以是数字

SET 赋值,用法:  SET key value
GET 取值,用法:  GET key
INCR 递增数字,仅仅对数字类型的键有用,相当于Java的i++运算,用法:  INCR key
INCRBY 增加指定的数字,仅仅对数字类型的键有用,相当于Java的i+=3,用法: INCRBY key increment ,意思是key自增increment,increment可以为负数,表示减少。
DECR 递减数字,仅仅对数字类型的键有用,相当于Java的i–,用法: DECR key
DECRBY 减少指定的数字,仅仅对数字类型的键有用,相当于Java的i-=3,用法: DECRBY key decrement ,意思是key自减decrement,decrement可以为正数,表示增加。
INCRBYFLOAT 增加指定浮点数,仅仅对数字类型的键有用,用法: INCRBYFLOAT key increment
APPEND 向尾部追加值,相当于Java中的”hello”.append(“ world”),用法: APPEND key value
STRLEN 获取字符串长度,用法: STRLEN key
MSET 同时设置多个key的值,用法: MSET key1 value1 [key2 value2 ...]
MGET 同时获取多个key的值,用法: MGET key1 [key2 ...]
Hash  多个key-value对的集合,可以用来存储对象,相当于Java中的HashMap

HSET 赋值,用法: HSET key field value
HMSET 一次赋值多个字段,用法: HMSET key field1 value1 [field2 values]
HGET 取值,用法: HSET key field
HMGET 一次取多个字段的值,用法: HMSET key field1 [field2]
HGETALL 一次取所有字段的值,用法: HGETALL key
HEXISTS 判断字段是否存在,用法: HEXISTS key field
HSETNX 当字段不存在时赋值,用法: HSETNX key field value
HINCRBY 增加数字,仅对数字类型的值有用,用法: HINCRBY key field increment
HDEL 删除字段,用法: HDEL key field
HKEYS 获取所有字段名,用法: HKEYS key
HVALS 获取所有字段值,用法: HVALS key
HLEN 获取字段数量,用法: HLEN key
List 双向链表

LPUSH 向列表左端添加元素,用法: LPUSH key value
RPUSH 向列表右端添加元素,用法: RPUSH key value
LPOP 从列表左端弹出元素,用法: LPOP key
RPOP 从列表右端弹出元素,用法: RPOP key
LLEN 获取列表中元素个数,用法: LLEN key
LRANGE 获取列表中某一片段的元素,用法: LRANGE key start stop ,index从0开始,-1表示最后一个元素
LREM 删除列表中指定的值,用法: LREM key count value ,删除列表中前count个值为value的元素,当count>0时从左边开始数,count<0时从右边开始数,count=0时会删除所有值为value的元素
LINDEX 获取指定索引的元素值,用法: LINDEX key index
LSET 设置指定索引的元素值,用法: LSET key index value
LTRIM 只保留列表指定片段,用法: LTRIM key start stop ,包含start和stop
LINSERT 像列表中插入元素,用法: LINSERT key BEFORE|AFTER privot value ,从左边开始寻找值为privot的第一个元素,然后根据第二个参数是BEFORE还是AFTER决定在该元素的前面还是后面插入value
RPOPLPUSH 将元素从一个列表转义到另一个列表,用法: RPOPLPUSH source destination
Set  内部实现是一个 value为null的HashMap,相当于Java中的HashSet

SADD 添加元素,用法: SADD key value1 [value2 value3 ...]
SREM 删除元素,用法: SREM key value2 [value2 value3 ...]
SMEMBERS 获得集合中所有元素,用法: SMEMBERS key
SISMEMBER 判断元素是否在集合中,用法: SISMEMBER key value
SDIFF 对集合做差集运算,用法: SDIFF key1 key2 [key3 ...] ,先计算key1和key2的差集,然后再用结果与key3做差集
SINTER 对集合做交集运算,用法: SINTER key1 key2 [key3 ...]
SUNION 对集合做并集运算,用法: SUNION key1 key2 [key3 ...]
SCARD 获得集合中元素的个数,用法: SCARD key
SDIFFSTORE 对集合做差集并将结果存储,用法: SDIFFSTORE destination key1 key2 [key3 ...]
SINTERSTORE 对集合做交集运算并将结果存储,用法: SINTERSTORE destination key1 key2 [key3 ...]
SUNIONSTORE 对集合做并集运算并将结果存储,用法: SUNIONSTORE destination key1 key2 [key3 ...]
SRANDMEMBER 随机获取集合中的元素,用法: SRANDMEMBER key [count] ,当count>0时,会随机中集合中获取count个不重复的元素,当count<0时,随机中集合中获取|count|和可能重复的元素。
SPOP 从集合中随机弹出一个元素,用法: SPOP key
Sorted Set 有序的set类型

ZADD 添加元素,用法: ZADD key score1 value1 [score2 value2 score3 value3 ...]
ZSCORE 获取元素的分数,用法: ZSCORE key value
ZRANGE 获取排名在某个范围的元素,用法: ZRANGE key start stop [WITHSCORE] ,按照元素从小到大的顺序排序,从0开始编号,包含start和stop对应的元素,WITHSCORE选项表示是否返回元素分数
ZREVRANGE 获取排名在某个范围的元素,用法: ZREVRANGE key start stop [WITHSCORE] ,和上一个命令用法一样,只是这个倒序排序的。
ZRANGEBYSCORE 获取指定分数范围内的元素,用法: ZRANGEBYSCORE key min max ,包含min和max, (min 表示不包含min, (max 表示不包含max, +inf 表示无穷大
ZINCRBY 增加某个元素的分数,用法: ZINCRBY key increment value
ZCARD 获取集合中元素的个数,用法: ZCARD key
ZCOUNT 获取指定分数范围内的元素个数,用法: ZCOUNT key min max ,min和max的用法和5中的一样
ZREM 删除一个或多个元素,用法: ZREM key value1 [value2 ...]
ZREMRANGEBYRANK 按照排名范围删除元素,用法: ZREMRANGEBYRANK key start stop
ZREMRANGEBYSCORE 按照分数范围删除元素,用法: ZREMRANGEBYSCORE key min max ,min和max的用法和4中的一样
ZRANK 获取正序排序的元素的排名,用法: ZRANK key value
ZREVRANK 获取逆序排序的元素的排名,用法: ZREVRANK key value

相关文章

精彩推荐