启动Redis服务和客户端
和mysql的启动方式不一样,注意区别。以后大多都是再用类似Redis这种方式,安装后将命令扔到一个目录下,一般都是全局环境变量path对于的路径,
1、指定配置文件启动Redis服务
redis-server /myredis/redis.conf
redis-server /myredis/redis.conf 后面指定的配置文件,是自己修改过后的配置文件,不是其原来的,因为按照原来的配置文件,启动的方式是阻塞的,启动后不能直接在后面输入命令,而是要单独开一个窗口,输入其他命令,所以进行了一定的修改。在这里指定的是自己的配置文件,若不指定,则用的默认配置文件
2、查看Redis服务是否启动成功
ps -aux|grep redis
3、通过redis-cli连接Redis服务端
redis-cli
redis-cli -h 127.0.0.1 -p 6379
4、关闭Redis服务端和客户端
4.1 在连接成功的redis-cli的窗口中执行ctrl+c只会关闭客户端
Ctrl+C
4.2、关闭服务器
如果redis-cli已经连接了redis服务端,执行:shutdown,可以关闭客户端和服务端。
如果redis-cli没有连接了redis服务端,redis-cli -h ip地址 -p 端口号 shutdown
Redis和memcached的区别
redis采用单线程+多路IO复用的技术,提高性能;
memcached采用串行+多线程+锁的方式,提高性能(性能较差);
redis数据类型多,支持持久化;memcached只支持string;
同时有多个请求,redis是单线程方式,只有一个线程处理请求,其会采用多路IO复用技术去处理请求,由于数据存在内存里面,处理起来比较快,每个请求进来的时候,直接将命令执行完成,然后处理下一个。memcached会开启多线程,每个请求进来的时候会对应一个线程,线程会接收请求,最终处理的时候对数据加了锁,也就是只能处理一个线程对应的请求,处理完之后处理下一个。
Redis五大数据类型
String
List
Set
hash
zset
Redis内存淘汰策略(面试会问)
设置redis可以使用的服务器的内存的大小【一般如果服务器只启动redis,一般可以设置为服务器内存的80%】
以后Redis中存储的数据大小如果达到了设置的manmemory的大小,如果再次有新的写操作,redis还需要配置内存淘汰策略,处理更新操作。
redis内存淘汰策略,默认是noeviction。
564 # volatile-lru -> Evict using approximated LRU among the keys with an expire set.
使用LRU算法,在拥有过期时间的key中进行移除
565 # allkeys-lru -> Evict any key using approximated LRU.
所有的key都采用LRU的算法移除
566 # volatile-lfu -> Evict using approximated LFU among the keys with an expire set.
使用LFU算法,在拥有过期时间的key中进行移除
567 # allkeys-lfu -> Evict any key using approximated LFU.
所有的key都采用LFU的算法移除
568 # volatile-random -> Remove a random key among the ones with an expire set.
使用random算法,在拥有过期时间的key中进行移除
569 # allkeys-random -> Remove a random key, any key.
所有的key都采用随机的方式移除
570 # volatile-ttl -> Remove the key with the nearest expire time (minor TTL)
针对所有的有过期时间的key,优先移除即将过期的
571 # noeviction -> Don't evict anything, just return an error on write operations.
不删除Redis中的数据,当内存满了,有新的写操作时,只是返回一个错误。
572 #
573 # LRU means Least Recently Used:最近最少使用(按时间来算,数据使用时间距离现在最远的数据优先溢出)
574 # LFU means Least Frequently Used:最近最不频繁使用(每个数据使用的时候都统计了使用次数,最近使用次数最少的数据优先移除)
Redis使用淘汰策略时,只是根据抽样数据进行移除。maxmemory-samples就是抽样数据 的样例数量。设置值的范围一般是3-10,10比较精确,但是消耗CPU性能,3消耗性能少,但是数据不够精确。5比较合适。
jedis
java连接虚拟机的Redis的步骤
1、创建maven工程
2、引入依赖驱动包
<dependencies>
<dependency>
<groupId>redis.clients</groupId>
<artifactId>jedis</artifactId>
<version>2.9.0</version>
</dependency>
</dependencies>
3、创建redis连接对象操作redis,关闭连接
4、如果报错
原因1:防火墙没关闭
原因2:Redis以保护模式启动,以远程不能连接
关闭保护模式
注释bind 127.0.0.1
修改protected-mode 为 no
小例子:
public class JedisTest {
public static void main(String[] args) {
// 创建redis连接对象Jedis
Jedis jedis = new Jedis("192.168.200.130",6379);
// 发送redis命令让redis服务端执行
// String ping = jedis.ping();
// System.out.println("ping="+ping);
Map<String, Double> members=new HashMap<>();
members.put("lijei",90.0);
members.put("kpjo",94.2);
members.put("fojo",71.5);
members.put("qoqoo",81.2);
members.put("bopa",61.5);
members.put("xigi",91.6);
jedis.zadd("scores",members);
Set<Tuple> tuples = jedis.zrevrangeWithScores("scores", 0, 2);
int i =0;
for(Tuple tuple:tuples){
System.out.println("第"+(++i)+"名:"+tuple.getElement()+",分数:"+tuple.getScore());
}
jedis.del("scores");
jedis.close();
}
}
结果: