更新时间:2022-08-13 10:29:25
目录
目录创建于2017-12-18
redis-server --service-install redis.windows.conf --loglevel verbose
E:/redis/redis-server.exe E:/redis/redis.windows.conf
requirepass redis1104
auth redis1104
make
进行编译,编译完成后,复制src目录中的redis-cli redis-server
就可以用了,redis-benchmark可选,测性能 server_redis.sh
basepath=$(cd `dirname $0`; pwd)
echo $basepath
$basepath/redis-server $basepath/redis.conf>redis.log &
client_redis.sh
basepath=$(cd `dirname $0`; pwd)
$basepath/redis-cli -p 6379
【字符串
】
【list 列表 (类似队列)
】
【set 集合 (类似无序的Set)
】
asdd key member
smembers key
sismember key member
srem key member
【hash 散列 (类似Map 嵌套,一个内置的微型redis)
】
【zset 有序集合(元素是键值对,键是member成员,值是score分值必须是浮点数)
】
zadd key 3.3 member
精度丢失问题
expire key seconds
设置键的过期时间PTTL/TTL key
查看键剩余过期时间(生存时间) ms/sset key newval nx
存在则set失败set key newval xx
不存在则set失败incr
是原子操作即并发的情况下不会有脏读(可用于主键生成策略)getset key val
set新值,get旧值mset mget
mset key val key val
mget key key key
返回值组成的数组exists key
有该值就返回1否则0del key
返回1被删除,0 key不存在type key
返回值的类型expire key secondes
设置或改变超时时间,精度是秒或毫秒 set key val ex secondes
set时设置超时时间persist key
去除超时时间ttl key
查看剩余存活时间 -1表示永久 -2表示没有该keyrpush key val val val
右/尾添加元素 lpush是左/头,若表不存在就新建rpushx key value
若表不存在就什么都不做,否则尾插元素rpop key
从list右/尾端中删除元素返回元素值 没有了就返回null队列很有用
blpop
brpop
bpoplpush
brpoplpush
阻塞式先右弹再左进lrange key 0 -1
取指定长度的list -1表示全部ltrim key 0 2
截取当前的listlindex key offset
返回偏移量为offset的元素LINSERT key BEFORE|AFTER pivot value
将值 value 插入到列表 key 当中,位于值 pivot 之前或之后。 LREM key count value
根据参数 count 的值,移除列表中与参数 value 相等的元素。SADD key member [member ...]
SCARD key
返回集合 key 的基数(集合中元素的数量)。SDIFF key [key ...]
返回一个集合的全部成员,该集合是所有给定集合之间的差集。不存在的 key 被视为空集。SDIFFSTORE destination key [key ...]
这个命令的作用和 SDIFF 类似,但它将结果保存到 destination 集合,而不是简单地返回结果集。如果 destination 集合已经存在,则将其覆盖。destination 可以是 key 本身。SINTER key [key ...]
返回一个集合的全部成员,该集合是所有给定集合的交集。不存在的 key 被视为空集。当给定集合当中有一个空集时,结果也为空集(根据集合运算定律)。SINTERSTORE destination key [key ...]
与sdiffstore类似SISMEMBER key member
判断 member 元素是否集合 key 的成员。SMEMBERS key
SMOVE source destination member
将 member 元素从 source 集合移动到 destination 集合。 SMOVE 是原子性操作。SPOP key
移除并返回集合中的一个随机元素SRANDMEMBER key [count]
如果命令执行时,只提供了 key 参数,那么返回集合中的一个随机元素SREM key member [member ...]
移除集合 key 中的一个或多个 member 元素,不存在的 member 元素会被忽略。SUNION key [key ...]
返回一个集合的全部成员,该集合是所有给定集合的并集。SUNIONSTORE destination key [key ...]
SSCAN key cursor [MATCH pattern] [COUNT count]
参考 SCAN 命令PFADD
PFCOUNT
PFMERGE
GEOADD
GEOPOS
GEODIST
GEORADIUS
GEORADIUSBYMEMBER
GEOHASH
PSUBSCRIBE pattern [pattern ...]
PUBLISH channel message
PUBSUB <subcommand> [argument [argument ...]]
PUBSUB CHANNELS [pattern]
列出当前的活跃频道。设置pattern参数就会匹配活跃频道,否则是列出所有频道PUBSUB NUMSUB [channel-1 ... channel-N]
返回给定频道的订阅者数量, 订阅模式的客户端不计算在内。PUBSUB NUMPAT
返回订阅模式的数量。注意, 这个命令返回的不是订阅模式的客户端的数量, 而是客户端订阅的所有模式的数量总和。PUNSUBSCRIBE [pattern [pattern ...]]
SUBSCRIBE channel [channel ...]
UNSUBSCRIBE [channel [channel ...]]
DISCARD
取消事务,放弃执行事务块内的所有命令。EXEC
MULTI
标记一个事务块的开始。事务块内的多条命令会按照先后顺序被放进一个队列当中,最后由 EXEC 命令原子性(atomic)地执行。UNWATCH
WATCH key [key ...]
BGREWRITEAOF
BGSAVE
CLIENT GETNAME
CLIENT KILL
CLIENT LIST
CLIENT SETNAME
CONFIG GET
CONFIG RESETSTAT
CONFIG REWRITE
CONFIG SET
DBSIZE
DEBUG OBJECT
DEBUG SEGFAULT
FLUSHALL
FLUSHDB
INFO
LASTSAVE
MONITOR
PSYNC
SAVE
SHUTDOWN
SLAVEOF
SLOWLOG
SYNC
TIME
redis-server --port 9999 --slaveof 127.0.0.1 6379
启动一个9999端口作为6379的从服务器进行同步slaveof host port
(如果已经是从服务器,就丢去旧服务器的数据集,转而对新的主服务器进行同步)slaveof no one
(同步的数据集不会丢失,迅速替换主服务器)./redis-server /etc/redis/6379.conf --loglevel debug
<dependency>
<groupId>org.springframework.data</groupId>
<artifactId>spring-data-redis</artifactId>
<version>1.6.0.RELEASE</version>
</dependency>
<dependency>
<groupId>redis.clients</groupId>
<artifactId>jedis</artifactId>
<version>2.9.0</version>
<type>jar</type>
<scope>compile</scope>
</dependency>
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-lang3</artifactId>
<version>3.3.2</version>
</dependency>
Spring配置文件
<!--
加载redis配置文件
如果已经加载了一个文件,那么第一个就要写这个配置项,
<property name="ignoreUnresolvablePlaceholders" value="true"/>
第二个要加 后面的配置
不然就只会加载前面那个文件
-->
<context:property-placeholder location="classpath:redis.properties" ignore-unresolvable="true"/>
<!-- redis连接池的配置 -->
<bean id="jedisPoolConfig" class="redis.clients.jedis.JedisPoolConfig">
<property name="maxActive" value="${redis.pool.maxActive}"/>
<property name="maxIdle" value="${redis.pool.maxIdle}"/>
<property name="minIdle" value="${redis.pool.minIdle}"/>
<property name="maxWait" value="${redis.pool.maxWait}"/>
<property name="testOnBorrow" value="${redis.pool.testOnBorrow}"/>
<property name="testOnReturn" value="${redis.pool.testOnReturn}"/>
</bean>
<!-- redis的连接池pool,不是必选项:timeout/password -->
<bean id = "jedisPool" class="redis.clients.jedis.JedisPool">
<constructor-arg index="0" ref="jedisPoolConfig"/>
<constructor-arg index="1" value="${redis.host}"/>
<constructor-arg index="2" value="${redis.port}" type="int"/>
<constructor-arg index="3" value="${redis.timeout}" type="int"/>
<constructor-arg index="4" value="${redis.password}"/>
</bean>
java实际测试类JedisUtilsTest.java
jedis 使用后要disconnect释放连接,最新版本close就不用了,使用连接池就不用