redis知识点汇总
redis基本命令
- select命令切换数据库
- dbsize查看当前数据库的key的数量
- flushdb:清空当前库
- Flushall;通杀全部库
redis五大数据类型
1.String(字符串)
string是redis最基本的类型,你可以理解成与Memcached一模一样的类型,一个key对应一个value。
string类型是二进制安全的。意思是redis的string可以包含任何数据。比如jpg图片或者序列化的对象 。
string类型是Redis最基本的数据类型,一个redis中字符串value最多可以是512M
2.hash(类似java中的map)
Hash(哈希)
Redis hash 是一个键值对集合。
Redis hash是一个string类型的field和value的映射表,hash特别适合用于存储对象。
3.List(列表)
Redis 列表是简单的字符串列表,按照插入顺序排序。你可以添加一个元素导列表的头部(左边)或者尾部(右边)。
它的底层实际是个链表
4.Set(集合)
Redis的Set是string类型的无序集合。它是通过HashTable实现实现的,
5.zset(sorted set:有序集合)
Redis zset 和 set 一样也是string类型元素的集合,且不允许重复的成员。
不同的是每个元素都会关联一个double类型的分数。
redis正是通过分数来为集合中的成员进行从小到大的排序。zset的成员是唯一的,但分数(score)却可以重复。
Redis 键(key)
1.keys *: 获取所有键
2.exists key: 判断某个key是否存在
3. move key db:移动key到db库
4.expire key 秒钟:为给定的key设置过期时间
5. ttl key 查看还有多少秒过期,-1表示永不过期,-2表示已过期
6. type key 查看你的key是什么类型
哨兵模式
哨兵配置文件 port 63791 sentinel monitor master-1 127.0.0.1 6379 2 //主master,2个sentinel选举成功后才有效 sentinel down-after-milliseconds master-1 5000 //判断主master的挂机时间(毫秒),超时未返回正确信息后标记为sdown状态 sentinel failover-timeout master-1 18000 //若sentinel在该配置值内未能完成failover操作(即故障时master/slave自动切换),则认为本次failover失败。 sentinel auth-pass master-1 grs //身份认证 sentinel parallel-syncs master-1 1 //选项指定了在执行故障转移时, 最多可以有多少个从服务器同时对新的主服务器进行同步,这个数字越小,完成故障转移所需的时间就越长
1.自定义一个目录,然后创建sentinel.conf文件,改好配置
2.启动哨兵
方式一:redis-sentinel /usr/local/sentinal/sentinal.conf
方式二:redis-server /path/to/sentinel.conf --sentinel
spring整合redis
1.导入jar包
2.配置Spring核心配置文件
<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:context="http://www.springframework.org/schema/context" xmlns:p="http://www.springframework.org/schema/p" xmlns:aop="http://www.springframework.org/schema/aop" xmlns:tx="http://www.springframework.org/schema/tx" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-4.0.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.0.xsd http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-4.0.xsd http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-4.0.xsd http://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util-4.0.xsd"> <!-- 配置jedis连接池 --> <bean id="jedisPoolConfig" class="redis.clients.jedis.JedisPoolConfig"> <!-- 最大连接数 --> <property name="maxTotal" value="30" /> <!-- 最大空闲连接数 --> <property name="maxIdle" value="10" /> <!-- 每次释放连接的最大数目 --> <property name="numTestsPerEvictionRun" value="1024" /> <!-- 释放连接的扫描间隔(毫秒) --> <property name="timeBetweenEvictionRunsMillis" value="30000" /> <!-- 连接最小空闲时间 --> <property name="minEvictableIdleTimeMillis" value="1800000" /> <!-- 连接空闲多久后释放, 当空闲时间>该值 且 空闲连接>最大空闲连接数 时直接释放 --> <property name="softMinEvictableIdleTimeMillis" value="10000" /> <!-- 获取连接时的最大等待毫秒数,小于零:阻塞不确定的时间,默认-1 --> <property name="maxWaitMillis" value="1500" /> <!-- 在获取连接的时候检查有效性, 默认false --> <property name="testOnBorrow" value="true" /> <!-- 在空闲时检查有效性, 默认false --> <property name="testWhileIdle" value="true" /> <!-- 连接耗尽时是否阻塞, false报异常,ture阻塞直到超时, 默认true --> <property name="blockWhenExhausted" value="false" /> </bean> <!-- jedis整合spring单机版 --> <!-- <bean id="jedisClient" class="redis.clients.jedis.JedisPool"> <constructor-arg name="host" value="192.168.26.128"/> <constructor-arg name="port" value="6379"/> <constructor-arg name="poolConfig" ref="jedisPoolConfig"/> </bean> --> <!-- jedisCluster JedisCluster jedisClients = new JedisCluster --> <bean id="jedisClients" class="redis.clients.jedis.JedisCluster"> <!-- ref引用了上面的配置 --> <constructor-arg name="poolConfig" ref="jedisPoolConfig"/> <constructor-arg name="nodes"> <set> <bean class="redis.clients.jedis.HostAndPort"> <constructor-arg name="host" value="192.168.26.30"/> <constructor-arg name="port" value="6379"/> </bean> <bean class="redis.clients.jedis.HostAndPort"> <constructor-arg name="host" value="192.168.26.30"/> <constructor-arg name="port" value="6380"/> </bean> <bean class="redis.clients.jedis.HostAndPort"> <constructor-arg name="host" value="192.168.26.30"/> <constructor-arg name="port" value="6381"/> </bean> <bean class="redis.clients.jedis.HostAndPort"> <constructor-arg name="host" value="192.168.26.30"/> <constructor-arg name="port" value="6382"/> </bean> <bean class="redis.clients.jedis.HostAndPort"> <constructor-arg name="host" value="192.168.26.30"/> <constructor-arg name="port" value="6383"/> </bean> <bean class="redis.clients.jedis.HostAndPort"> <constructor-arg name="host" value="192.168.26.30"/> <constructor-arg name="port" value="6384"/> </bean> </set> </constructor-arg> </bean> </beans>
3.测试
public static void main(String[] args) { // 读取spring 的配置文件 ApplicationContext ac = new ClassPathXmlApplicationContext("applicationContext-jedis.xml"); JedisCluster jc = (JedisCluster) ac.getBean("jedisClients"); jc.set("cluster", "集群"); System.out.println(jc.get("cluster")); }