Redis 是一个基于内存的key-value结构数据库
基于内存存储,读写性能高
适用于存储热点数据(热点商品,资讯,新闻,秒杀系统)
1.使用Redis
1.在Linux上安装Redis
2.在win系统安装直接解压即可
3.启动Redis
Linux中在Redis目录下的src目录下直接运行 ./redis-server
4.连接Redis服务
Linux中在Redis目录下的src目录下直接运行 ./redis-cli
Redis操作的相关命令:
keys * :查询所有存储的key
5.Redis服务优化
Linux中在Redis的根目录中修改 redis.conf
可以使用 /dae 搜索要修改的数据
从新启动服务,并且加载配置文件: src/redis-server ./redis.conf
6.设置Redis密码
Linux中,进入Redis.config配置文件,打开requirepass 这行代码设置后面的值,即完成了Redis的密码设置
7.远程登录Redis
Linux中,启动服务后,若想连接Redis使用,命令:
src/redis-cli -h localhost -p 6379
(本次登录为了测试在linux登录的,即用户名为本地地址localhost,端口为6379)
8.认证密码
进入Redis后若要操作redis,需要验证密码,使用指令:
auth password
也可以登录同时认证,使用命令:
src/redis-cli -h localhost -p 6379 -a password
9.允许Redis远程连接
修改 redis.conf 配置文件,查找 /bind 关键字,
把 bind ip地址 这行注释,这行默认代表只允许本地访问
10.6379接口防火墙问题
使用Linux指令开放6379端口即可解决。
firewall-cmd --zone=public --add-port=6379/tcp --permanent
11.登录远程redis
运行redis-server.exe
登录远程redis ,使用指令:
.\redis-cli.exe -h 192.168.41.135 -p 6379 -a 111111
2.Redis数据类型
(1)使用list列表,顺序存放,可以做任务队列,将一些任务数据插入,并排列,顺序取出。
(2)有序集合可以应用在排行榜的相关开发
3.Redis常用命令(redis中文网 https://www.redis.net.cn)
1.redis中字符串的操作命令
(1)设置key的过期时间,可以应用在验证码之类的开发
(2)SETNX key value :可以应用于分布式锁
2.哈希 hash 操作命令
3.列表 list 操作命令
4.集合 set 操作命令
5.有序集合 sorted set 操作命令
6.Redis 通用命令
4.JAVA中使用Redis
只要在IDEA中导入jedis坐标即可
Spring Data Redis 操作Redis
导入坐标
<!--springDateRedis-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-redis</artifactId>
</dependency>
IDEA中Redis的操作代码
@Autowired
privateRedisTemplateredisTemplate;//Redis封装的类,对大量的Redisapi进行了封装
/**
*操作String类型的数据 ,可以存储一些String类型的缓存信息,例如:提供给页面的json信息
*/
@Test
publicvoidtestString(){
redisTemplate.opsForValue().set("city1","北京");
Objectcity=redisTemplate.opsForValue().get("city1");
System.out.println(city);
//设置key的有效时间
redisTemplate.opsForValue().set("key1","1234",10l,TimeUnit.SECONDS);
//仅在没有指定key时,才能设置该key的值
Booleankey1=redisTemplate.opsForValue().setIfAbsent("key1","1111");
}
/**
*操作Hash哈希类型的数据
*/
@Test
publicvoidtestHash(){
HashOperationshashOperations=redisTemplate.opsForHash();
//存值
hashOperations.put("001","name","zhangsan");
hashOperations.put("001","age","23");
hashOperations.put("001","sex","1");
//取值
Stringname=(String)hashOperations.get("001","name");
System.out.println(name);
//获取hash结构中的所有字段
Setkeys=hashOperations.keys("001");
for(Objectkey:keys){
System.out.println(key);
}
//获取hash结构中的所有值
Listvalues=hashOperations.values("001");
for(Objectvalue:values){
System.out.println(value);
}
}
/**
*操作List类型的数据
*/
@Test
publicvoidtestList(){
ListOperationslistOperations=redisTemplate.opsForList();
//存值
listOperations.leftPush("myList","a");
listOperations.leftPushAll("myList","b","c");
//取值
List<String>myList=listOperations.range("myList",0,-1);
for(Stringvalue:myList){
System.out.println(value);
}
//获取列表长度
Longsize=listOperations.size("myList");
intlsize=size.intValue();//转型为int类型
//遍历循环将队列中的所有数据取出
for(inti=0;i<lsize;i++){
//出队列,每取出一个数据当前数据在队列中删除
Objectelement=listOperations.rightPop("myList");
}
}
/**
*操作Set(无序集合)类型数据
*/
@Test
publicvoidtestSet(){
SetOperationssetOperations=redisTemplate.opsForSet();
//存值
setOperations.add("myset","a","b","c","a");
//取值
Set<String>myset=setOperations.members("myset");
for(Strings:myset){
System.out.println(s);
}
//删除成员
setOperations.remove("myset","a");
//从新获取
Set<String>myset2=setOperations.members("myset");
for(Strings:myset2){
System.out.println(s);
}
}
/**
*操作ZSet(有序集合)类型的数据
*/
@Test
publicvoidtestZset(){
ZSetOperationszSetOperations=redisTemplate.opsForZSet();
//存值
zSetOperations.add("myZset","a",10.0);
zSetOperations.add("myZset","b",9.0);
zSetOperations.add("myZset","c",8.0);
zSetOperations.add("myZset","d",7.0);
//取值
Set<String>myZset=zSetOperations.range("myZset",0,-1);
for(Strings:myZset){
System.out.println(s);
}
//修改分数
zSetOperations.incrementScore("myZset","d",20.0);
//删除成员
zSetOperations.remove("myZset","a","b");
//再次查询
Set<String>myZset1=zSetOperations.range("myZset",0,-1);
for(Strings:myZset1){
System.out.println(s);
}
}
/**
*通用操作,针对不同的数据类型都可以操作
*/
@Test
publicvoidtestCommon(){
//获取Redis中所有的key
Setkeys=redisTemplate.keys("*");
for(Objectkey:keys){
System.out.println(key);
}
//判断某个key是否存在
Booleankey1=redisTemplate.hasKey("key1");
System.out.println(key1);
//删除指定key
redisTemplate.delete("myList");
//获取指定key对应的value的数据类型
DataTypedataType=redisTemplate.type("myset");
System.out.println(dataType.name());
}
标签:Redis,redis,System,笔记,println,安装,redisTemplate,out From: https://blog.51cto.com/u_16230662/7139898