1.安装
可选步骤:安装gcc:yum install gcc-c++
- 下载地址:http://redis.cn/download.html
- 解压:tar -xzvf redis-4.0.1.tar.gz -C /opt/software
- 编译:进入到安装目录(/opt/software/redis-4.0.1),执行make
- 安装:进入到src目录(/opt/software/redis-4.0.1/src),执行make install
- 安装完成
2.配置
- 复制配置文redis.conf件到 /opt/module/redis.conf
- 设置后台启动:daemonize yes
3.常用命令
- 启动:redis-server /opt/module/redis.conf
- 关闭:redis-cli shutdown(设置密码后关机:./redis-cli -a root shutdown)
- 连接:redis-cli
- 设置密码:config set requirepass root(设置连接密码为root)
- 输入连接密码:auth root
- 增加记录:set [key] [value]
- 获取值:get [key]
- 删除记录:del [key]
- 所有记录:keys *
- 所有key总数:dbsize
4.jedis开发
- 依赖
<dependency>
<groupId>redis.clients</groupId>
<artifactId>jedis</artifactId>
<version>2.9.0</version>
</dependency>
- Java代码
Jedis jedis=new Jedis("192.168.180.129",6379); // 创建客户端 设置IP和端口
jedis.auth("root");
jedis.set("hello", "Hello, redis!");
Set<String> keys = jedis.keys("*");
for(String key : keys) {
System.out.println("key:"+key+", value:"+jedis.get(key));
}
jedis.close(); // 释放连接资源
- 异常处理(连接超时)
- 更改防火墙设置
firewall-cmd --zone=public --add-port=6379/tcp --permanent
firewall-cmd --reload
- 注释本机绑定设置 在redis配置文件中,注释 bind 127.0.0.1
- 关闭自我保护
protected-mode yes 更改为 no
- redis连接池
JedisPoolConfig config=new JedisPoolConfig(); // 连接池的配置对象
config.setMaxTotal(100); // 设置最大连接数
config.setMaxIdle(10); // 设置最大空闲连接数
JedisPool jedisPool=new JedisPool(config,"192.168.180.129",6379);
Jedis jedis=null;
try{
jedis=jedisPool.getResource(); // 获取连接
jedis.auth("root"); // 设置密码
jedis.set("hello", "Hello, redis!");
Set<String> keys = jedis.keys("*");
for(String key : keys) {
System.out.println("key:"+key+", value:"+jedis.get(key));
}
}catch(Exception e){
e.printStackTrace();
}finally{
if(jedis!=null){
jedis.close();
}
if(jedisPool!=null){
jedisPool.close();
}
}
5.数据结构
- 键(key)
- keys *
- exists key的名字:判断某个key是否存在
- move key db :当前库就没有了,被移除,相当于剪切操作
- expire key 秒钟:为给定key设置过期时间
- ttl key:查看还有多少秒过期,-1表示永不过期,-2表示已过期
- type key:查看key是什么类型
2.字符串(String)
- set/get/del/append/strlen
- incr/decr/incrby/decrby:一定要是数字才能加减
- getrange/setrange:类似于substring
- setex(set with expire)键秒值/setnx(set if not exist)
- mset/mget/msetnx:批量操作
- getset:先get再set
3.列表(List)
- lpush/rpush/lrange(l:left:先进后出,r:right:先进先出,lrange list 0 -1)
- lpop/rpop(l:left:栈顶移出,r:right:栈底移出)
- lindex:按照索引下标获得元素(从上到下)
- llen:list长度
- lrem key 删除N个 value:(lrem list 2 3,删除list中2个3)
- ltrim key 开始index 结束index:截取指定范围的值后再复制给key
- rpoplpush 源列表 目的列表:
- lset key index value
- linsert key before/after 值1 值2
4.集合(Set)
- sadd/smembers/sismember
- scard:获取集合中的元素个数
- srem key value:删除集合中的元素
- srandmember key 某个整数:随机出几个数
- spop key:随机出栈
- smove key1 key2 key1中某个值:将key1中的某个值赋给key2
- 数学集合列,sdiff(差集),sinter(交集),sunion(并集)
5.哈希(Hash)
- hset/ hget/hmset/hmget/hgetall/hdel
- hlen
- hexists key 在key中的某个值得key
- hkeys/hvals
- hincrby/hincrbyfloat
- hsetnx
6.有序集合(Sorted set)
- zadd/zrange(zset key score value,zrange key 0 -1 【withscores】)
- zrangebyscore key 开始score 结束score(withscores,【(】不包含,limit start len)
- zrem key 某score下对应的value值,作用是删除元素
- zcard/zcount key score区间/zrank key values值:作用是获得下标值/zscore key对应值,获得分数
- zrevrank key values值:作用是逆序获得下标值
- zrevrange
- zrevrangebyscore key 结束score 开始score
6.主从复制
- info replication:查看主从配置信息
- slaveof [ip_addr] [port]:配置从机的主机
- slaveof no one:从机变主机
7.哨兵模式
- sentinel monitor <master-name> <ip> <redis-port> <quorum>
- redis-sentinel [sentinel配置文件]