redis:(key,value)用于缓存
用C语言开发的一个开源的高性能键值对的数据库,有5中类型
1.字符串类型 (String)
2.散列类型 (hash)
3.列表类型 (list)
4.集合类型 (set)
5.有序集合类型 (sorted set)
应用场景:
1.缓存(数据查询、短连接、新闻内容、商品内容等)
2.聊天室在线好友列表
3.任务队列(秒杀、抢购、12306等)
4.应用排行榜
5.网站访问统计
6.数据过期处理(可精准到豪秒)
7.分布式集群架构中session分离
./redis-cli 启动
./redis-server redis.conf
./redis-cli shutdown
后端启动
vim redis.conf 修改
daemonize yes
ps -ef | grep redis 查看进程
kill -9 5166
String类型的命令:
getset username lisi命令 获取key并设置lisi为value
del username
set num 10; get num; incr num;递增 decr num;递减
incrby num2 9 指定key加9; decr num2 9
append num2 xxx;拼接字符串
Hash类型命令:
每一个hash可以存储4294967295个键值对
hset myhash name tom
hget myhash name
hmset myhash age 25 addr beijing 可设置多个
hmget myhash name age addr
hgetall myhash 获取所有的
del myhash age; del myhash
hincrby myhash age 10 增加
hincrby myhash age -10
hexists myhash age 查询是否存在(1存在,0不存在)
hlen myhash 长度
hkeys myhash; hvals myhash 查看所有的key和value
set无序集合
sadd myset a b c
smembers myset 查所有
srem myset c 删除
sismember myset b 判断存不存在
sdiff myset myset2 差集.,前减后取前面的
sinter myset myset2 交集
sunion myset myset2 并集
scard myset 查看有几个元素
srandmember myset 随机一个数
sdiffstore myset3 myset2 myset 查出差集存入另一个set中,交集并集一样
有序sortedset
zadd mysort 100 a 80 b 50 c
zrange mysort 0 -1 查询对象,没排序
zrange mysrot 0 -1 withscores 查询对象与编号,有排序
zrevrange mysort 0 -1 withscores 倒序,从大到小
zcard mysrot 查看对象个数
zscore mysort a 查看对象对应数字
zrem mysort b 删除
zremrangebyrank mysort 0 2 范围删除,默认从小到大删三个
zremrangebyscore mysort 25 87 按分数删
zrangebyscore mysort 0 100 limit 0 3 分页查询
zcount mysort 50 80 查看分数之间的个数
zrank mysort
zincrby mysrot 3 lisi 增加分数
通用操作
keys * 或 keys my* 模糊查询所有key
delkey xxx num
exists myset 判断是否存在
rename num2 num 修改名字
expire addr 60 (秒)设置过期时间
ttl addr 查看剩余过期时间(-1没有设置超时时间,-2超时)
type myset 查看key类型
特性
Redis Desktop Manager 客户端软件
select 1 连接1库 select 0 退出
move num 1 移动到1库
服务器命令
ping 活没活
echo 输出命令
quit 退出
dbsize 返回当前数据库中的key数目
flushdb 删除当前选择库中的所有key
flushall 删除所有数据库中的所有key
info 查看服务器信息
randomkey 随机取出一个key
slowlog get 查看日志
slowlog get 10
monitor 查看redis正在做什么 #注意,有高手的文章说这个会急剧降低redis性能,只能在测试环境使用。
消息订阅与发布
subscribe mychat 订阅频道,订阅mychat频道
psubscribe mych* 批量订阅频道
publish mychat 发布
redis事务
multi 开启事务用于标记事务的开始,开启后每次操作数据都会排队等待递交
exec 递交事务
discard 回退事务
redis持久化
支持两种方式的持久化:RDB,AOF
RDB:在指定的时间间隔内将内存中的数据集开照写入磁盘
优势:
1.在大量的数据情况下
2.可灵活指定时间间隔来存储快照
3.可根据key值的修改多少来动态时间存储快照
4.AOF运行效率会慢于RDB
AOF:存储执行的命令日志
配置
always 每次有数据修改发生时就写入AOF文件
everysec 每秒钟同步一次,该策略为AOF的默认方法
no 从不同步,高效但数据不会持久化
更详细命令连接:http://doc.redisfans.com/
Jedis
//1.获取连接对象
Jedis jedis = new Jedis(“192.168.186.131”,6379);
//2.获得数据
String username = jedis.get(“username”);
//3.存储
jedis.set(“addr”,”北京”);
//通过jedis的pool获取jedis连接对象
//0.创建池子的配置对象
JedisPoolConfig poolConfig = new JedisPoolConfig();
poolConfig.setMaxIdle(30);//最大闲置个数
poolConfig.setMinIdle(10);//最小闲置个数
poolConfig.setMaxTotal(50);//最大连接数
//1.创建一个redis的连接池
JedioPool pool = new JedisPool(poolConfig,”192.168.186.131”,6379);
//2.从池子中获取redis的连接资源
Jedis jedis = pool.getResource();
//3.操作数据库
jedis.set(“xxx”,”yyy”);
//4.关闭资源
jedis.close();
pool.close();
加载配置文件
InputStream in = JedisPoolUtils.class.getClassLoader().getResourceAsSteam(“redis.properties”);
Properties pro = new Properties();
pro.load(in);