Redis的使用

AOEBIU 2020/1/12 Redis
 简介
Redis是用C语言写的高性能的NoSQL系列的非关系型数据库
NoSQL(Not only sql)
NoSQL是基于键值对,是在内存中解析,性能非常高。
基于键值对,数据之间没有耦合,所以非常容易水平扩展
将数据存储在关系数据库中,在nosql数据中被暂存,关系型和非关系型数据库是属于互补的关系。
如果数据需要频繁从数据库总取出的不经常改动的数据需要使用redis
首先用户向服务器发送一个请求,需要查询数据,服务器从Mysql数据库中查出需要的数据交还给服务器,服务器将查询的结果交给用户的同时交给redis
之后的所有请求就不需要在经过mysql数据库了,因为redis的数据是写在内存上的读写性能非常高,但是重要的资源可能会丢失
如果没有redis那么每次都需要进入dao层去存取数据
使用redis需要打开redis-service,输入redis命令需要打开redis-cl,关闭redis所有数据都会消失
数据类型
redis有5中数据类型分别是
string 字符串
hash 类似Map集合
list 类似LinkedList集合
set 类似HahsSet集合
sortedset 不允许重复,存进去会自动排序
操作redis
1.字符串类型操作
set 【key】【value】 存储
get 【key】 获取
del 【key】 删除
2.hash类型操作 key就是hash的名字
hset 【key】 【filed】 【value】 存储
hget 【key】 【filed】 获取指定的key对应的值
hgetAll 【key】 获取指定key的所有的filed和value
hdel 【key】【filed】 删除
3.list列表类型
lpush 【 key】【 value】 将元素加入列表左边
rpush【 key】【 value】 将元素加入列表右边
lrange 【 key】start end 通过下标获取
lpop 【 key】 删除列表最左边的值,并将元素返回
rpop 【 key】 删除列表最右边的值,并将元素返回
lrange 【key】0 -1 显示所有
4.set类型(不能有重复元素)
sadd【 key】【value】 存储
smembers 【key】 获取key里的所有元素
srem【key】【value】 删除key里的某个元素
5.sortedset类型(set不允许有重复的值,且元素有顺序)
zadd 【key】【score 】【value】存储(通过给的score来从小到大排序)
zrange 【key】start end 获取
zrem 【key】 【value】 删除
zrange【key】0 -1 withscores 获取vlaue与对应的score
其他命令
keys * 查询所有的key
type 【key】 获取这个key的类型
del【key】 删除这个key
持久化 redis的持久化分为RDB和AOF两种
RDB默认方式
在redis/windos/conf中默认的配置
save 900 1 在900秒内如果至少一条记录被改变则持久化保存
save 300 10 在300秒内如果至少十条记录被改变则持久化保存
save 60 10000 在60秒内如果至少一万条记录被改变则持久化保存
部署配置文件
在redis目录下cmd执行
redis_server.exe redis.windows.conf 部署配置文件
AOF日志记录方式
在redis/windos/conf中默认的配置
appendonly no 改为appendonly yes开启AOF持久化机制
并且选择一个
appendfsync alwaus 每一次操作都进行持久化
appendfsync everysec 每隔一秒进行持久化
appendfsync no 不进行持久化
Jedis,使用JAVA操作redis
Jedis jedis=new Jedis("localhost",6379); 默认参数,不写也一样
jedis.set("username","xiaowang"); 所有方法名和参数在redis中的一模一样
jedis.hset("user", "name", "zhangsan");
jedis.hgetAll("user");
jedis.lpop("user");
jedis.lrop("user");
Set<Tuple> categorys = jedis.zrangeWithScores("user", 0, -1); jedis中的Tuple封装了元素以及scores
redis连接池工具类
准备的参数
host=127.0.0.1
port=6379
maxTotal=50
maxIdle=10
public final class JedisUtil {
private static JedisPool jedisPool;
static {
InputStream is = JedisPool.class.getClassLoader().getResourceAsStream("jedis.properties");
Properties pro = new Properties();
try {
pro.load(is);
} catch (IOException e) {
e.printStackTrace();
}
JedisPoolConfig config = new JedisPoolConfig();
config.setMaxTotal(Integer.parseInt(pro.getProperty("maxTotal")));
config.setMaxIdle(Integer.parseInt(pro.getProperty("maxIdle")));
jedisPool = new JedisPool(config, pro.getProperty("host"), Integer.parseInt(pro.getProperty("port")));
}
public static Jedis getJedis() {
return jedisPool.getResource();
}
public static void close(Jedis jedis) {
if (jedis != null) {
jedis.close();
}
}
}
觉得这篇文章对你有有帮助吗?
发表评论
0
说扒~

条回复 个点赞
为什么没人来抢占个沙发呢?