首先编译
tar -zxvf redis-3.0.3.tar.gzcd redis-3.0.3makecd srcmake install
make完成后,有产生可执行文件(绿色的)
redis-server:redis服务器的启动程序 redis-cli:redis命令行工具,也可为客户端 redis-benchmark:redis性能测试工具(读写) redis-stat:redis状态检测工具(状态参数延迟)移动文件,便于管理
mkdir -p /usr/local/redis/binmkdir -p /usr/local/redis/etccp /opt/yuanhai/redis-3.0.3/redis.conf /usr/local/redis/etc#并将src目录下的7个命令文件(绿色的),移动到/usr/local/redis/bin/ cp mkreleasehdr.sh redis-sentinel redis-server redis-trib.rb redis-benchmark redis-check-dump redis-cli /usr/local/redis/bin
修改redis.conf 配置监听端口port 6379改为 port 6378
指定配置文件启动redis
./redis-server /usr/local/redis/etc/redis.conf
默认是前台运行
redis的后台启动并运行需要通过配置文件中的参数设置。
Redis的配置文件中有哪些配置呢?
daemonize 如果需要在后台运行,把该项改为yes
pidfile 当redis在后台运行的时候,Redis默认会把pid文件放在/var/run/redis.pid,你可以配置到其他地址。当运行多个redis服务时,需要指定不同的pid文件和端口
bind 绑定ip,设置后只接受来自该ip的请求
port 监听端口,默认是6379
loglevel 分为4个等级:debug verbose notice warning
logfile 用于配置log文件地址
databases 设置数据库个数,默认使用的数据库为0
save 设置redis进行数据库镜像的频率。
rdbcompression 在进行镜像备份时,是否进行压缩
dbfilename 镜像备份文件的文件名
Dir 数据库镜像备份的文件放置路径
Slaveof 设置数据库为其他数据库的从数据库
Masterauth 主数据库连接需要的密码验证
Requriepass 设置 登陆时需要使用密码
Maxclients 限制同时使用的客户数量
Maxmemory 设置redis能够使用的最大内存
Appendonly 开启append only模式
Appendfsync 设置对appendonly.aof文件同步的频率(对数据进行备份的第二种方式)
vm-enabled 是否开启虚拟内存支持 (vm开头的参数都是配置虚拟内存的)
vm-swap-file 设置虚拟内存的交换文件路径
vm-max-memory 设置redis使用的最大物理内存大小
vm-page-size 设置虚拟内存的页大小
vm-pages 设置交换文件的总的page数量
vm-max-threads 设置VM IO同时使用的线程数量
Glueoutputbuf 把小的输出缓存存放在一起
hash-max-zipmap-entries 设置hash的临界值
Activerehashing 重新hash
一、string 类型(redis的string可以包含任何数据,比如jpg图片或者序列化的对象)set name lijiesetnx name lijie 如果key已经存在,返回0,不更新数据,nx是not exist的意思get name 取出数据setex 指定键的有效期setex haicolor 10 red setrange email 6 li-jie.me 设置子字符串从第6位开始替换mset/mget 批量设置 OK表示所有值都被设置了,失败返回零表示没有任何值被设置mset key1 lijie1 key2 lijie2msetnx跟setnx类似getset 设置key的值并且返回key的旧值getrange获取子字符串(前6个字符)getrange email 0 5incr/decr 递增/递减(步长为1)incr key1incrby/decrby 已指定的步长递增或递减,key不存在时设置key,并认为原来的value为0incrby key1 6incrby key1 -6append 给指定key的value追加字符串,返回新字符串长度strlen 查看key的value长度二、hash类型(映射表,特别适用于存储对象)hset user:001 name lijiehget user:001 namehsetnx user:001 name lijiehmset 同时设置hash的多个字段hmset user:002 name lijie age 20 sex 1hincrby user:003 age 5hexists判断hash表里某个字段是否存在hlen代表hash表里所有字段的数量hdel删除某个字段hdel user:003 agehkeys返回hash表的所有fieldhvals返回hash表的所有value同时返回hash表中的全部字段和值hgetall user:003三、list类型(链表)lpush mylist "world"//在key对应的list头部添加元素lpush mylist "hello"lrange mylist 0 -1 //从头取到尾rpush 向尾部压入元素//在特定位置前后添加元素linsert mylist before "world" "middle" lset //将指定下标的元素替换掉lset mylist 0 "change"lrem //从list中删除n个和value相同的元素,返回删除掉的个数n<0从尾部删除,n=0全部删除lrem mylist 3 "one"保留指定范围的元素,两端都删除ltrim mylist 1 -1lpop从头弹出一个元素rpop从尾弹出一个元素rpoplpush//从第一个list的尾部移除元素并添加到第二个list的头部rpoplpush list5 list6返回指定索引的元素lindex mylist 0llen 返回指定list的长度四、set集合(无序集合,交集、并集、差集sns中好友推荐,共同好友)添加元素sadd myset hello查看元素smembers myset删除集合中的某个元素srem myset hellospop随机弹出删除元素spop mysetsdiff两个集合取差集sdiff myset1 myset2sdiffstore将返回的差集存到另一个集合里(myset3)sdiffstore myset3 myset1 myset2 sinter 返回两个集合的交集sinterstore 将返回的交集存到另一个集合里取并集sunion myset1 myset2取并集并且存储sunionstore myset3 myset1 myset2将一个集合中的元素移动到第二个集合smove myset1 myset2 threescard 查看集合中元素个数scard myset判断某元素是否为集合的元素sismember myset one//判断one元素是不是集合myset中的元素srandmember 随机返回集合中一个元素但不删除五、sorted set(有序集合,可以理解为有两列的mysql表,加了个顺序字段)zadd zset1 1 onezadd zset1 2 twozrange zset1 0 -1zrange zset1 0 -1 withscores //带顺序号查看zrem zset1 one//删除有序集合中元素zincrby zset1 2 two 对顺序号增加zrank zset1 two//返回元素的索引值,升序排序zrevrank zset1 two//返回元素的索引值,降序排序zrevrange zset1 0 -1 withscores zrangebyscore zset1 2 4 withscores//返回score在给定区间的元素(2-4)zcount zset1 2 4//返回集合中socre在给定区间的数量zcard zset1 //返回集合中所有元素的个数zremrangebyrank zset1 2 3//删除索引在指定区间的元素zremrangebyscore zset1 2 5//删除顺序在指定区间的元素六、redis常用命令1.键值相关命令keys * 返回所有键exists key1 判断某个key是否存在del key1 删除某键expire key1 10 设置过期时间10sttl key1 获取key的有效时长,直到-1说明此值已过期select 0 选择当前数据库(默认总共16个数据库) move key1 1 移动到1数据库persist key1 移除指定key的过期时间randomkey 随机返回一个keyrename key1 key_new 重命名type 返回键的数据类型2.服务器相关命令直接输入ping 测试连接是否存活,连接正常返回PONGquit 退出客户端dbsize返回数据库中键的数量info 获取redis服务器的信息config get * 返回所有配置选项flushdb 删除当前数据库中的所有keyflushall 删除所有数据库中的所有key3.高级特性(1) 安全性requirepass yuanhai//配置文件中设置密码auth yuanhai 客户端输入密码进行连接或者客户端启动时 redis-cli -a yuanhai(2)主从复制只需在slave的配置文件中加入以下配置:slaveof 192.168.1.1 6379 #指定master的ip和端口masterauth yuanhai #这是master的密码(3)事务处理multi命令进入事务上下文,该命令后续的命令不会立即执行,而是先放到一个队列中,当执行exec时,redis会顺序执行队列中的所有命令multiset age 10 set age 20 execdiscard //取消事务,事务回滚redis乐观锁实例watch key //监控某个键是否被修改过,如果修改过当前的事务不允许执行相当于加了个乐观锁exec discard unwatch 都会清除连接中的所有监视(4)持久化机制一、snapshotting 快照默认方式,存数据,默认文件名dump.rdbsave 900 1 #900秒内如果超过1个key被修改,则发起快照保存save 300 10save 60 10000dbfilename dump.rdb快照存在丢失数据的缺点二、append-only aof方式,存操作命令appendonly yes//启用aof持久化方式#fsync函数强制OS写入到磁盘的时机appendfsync always//收到命令就立即写入磁盘,最慢,但是保证完全的持久化appendfsync everysec//每秒钟写入磁盘一次,在性能和持久化方面做了很好的折衷appendfsync no//完全依赖OS,性能最好,持久化没保证(6)发布及订阅消息(解除耦合,可用于聊天系统)subscribe tv1 tv2//订阅两个通道的消息publish tv1 lijie//tv1发布消息(7)虚拟内存(vm)vm-enabled yes #开启vm功能vm-swap-file /tmp/redis.swap #交换出来的value保存的文件路径vm-max-memory 100000 #redis使用的最大内存上限vm-page-size 32 #每个页面的大小32字节vm-pages 134217728 #最多使用多少页面vm-max-threads 4 #用于执行value对象换入的工作线程数量
参考文章:
redis多数据库:databases 设置数据库个数
redis安装
redis配置文件解析
jedis代码操作;
redis集群搭建
redis客户端缓冲区和主从复制