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"));
    }

相关推荐