写在前面的话
以前总觉得,写代码就是用自己知道的东西,写点东西,但是今天我发现,我们这么个专业,真的是要不断的投入,不管是基础还是新技术,不要用现在的眼光来评价是否有用,不饱和性是比较重要的。
简介
redis是一个key-value存储系统,它支持存储的value类型相对更多,包括string(字符串)、list(链表)、set(集合)、zset(sorted set --有序集合)和hash(哈希类型)。这些数据类型都支持push/pop、add/remove及取交集并集和差集及更丰富的操作,而且这些操作都是原子性的。在此基础上,redis支持各种不同方式的排序。为了保证效率,数据都是缓存在内存中。区别的是redis会周期性的把更新的数据写入磁盘或者把修改操作写入追加的记录文件,并且在此基础上实现了master-slave(主从)同步。
redis提供五种数据类型:string,hash,list,set及zset(sorted set)。
提供的操作:
slect #选择数据库(数据库编号0-15
quit #退出连接
info #获得服务的信息与统计
monitor #实时监控
config get #获得服务配置
flushdb #删除当前选择的数据库中的key
flushall #删除所有数据库中的key
Java中使用redis
redis 在Java中,使用的是的Jedis
涉及配置
reids服务端,客户端,以及连接配置
连接
redis.timeout=60000
redis.usePool=true
redis.hostName=127.0.0.1
#redis参数配置
#最大连接数
redis.maxTotal=1000
#最大空闲连接数
redis.maxIdle=50
#最小空闲连接数
redis.minIdle=10
#获取连接时的最大等待毫秒数,小于零:阻塞不确定的时间,默认-1
redis.maxWaitMillis=30000
#在获取连接的时候检查有效性, 默认false
redis.testOnBorrow=true
#在return给pool时,是否提前进行validate操作
redis.testOnReturn=true
#表示一个对象至少停留在idle状态的最短时间,然后才能被idle object evitor扫描并驱逐;这一项只有在timeBetweenEvictionRunsMillis大于0时才有意义;
redis.minEvictableIdleTimeMillis=60000
#表示idle object evitor每次扫描的最多的对象数
redis.numTestsPerEvictionRun=100
#释放连接的扫描间隔(毫秒)
redis.timeBetweenEvictionRunsMillis=60000
#主从配置
sentinel.isStartSlave=NO
sentinel.masterName=pmaster
sentinel.hostAndPort=127.0.0.1:26379
服务端
verify=2 cert=/opt/stunnel/ssl/server-cert.pem key=/opt/stunnel/ssl/server-key.pem CAfile=/opt/stunnel/ssl/ca.pem pid=/opt/stunnel/stunnelserver.pid options=NO_SSLv2 options=NO_SSLv3 options=NO_TLSv1 ciphers=128-SHA256 [redis] accept=10.148.128.84:6380 connect=127.0.0.1:8000
客户端
client=yes cert=/opt/stunnel/ssl/server-cert.pem key=/opt/stunnel/ssl/server-key.pem CAfile=/opt/stunnel/ssl/ca.pem pid=/opt/stunnel/stunnelclient.pid options=NO_SSLv2 options=NO_SSLv3 options=NO_TLSv1 ciphers=AES128-SHA:AESES128-SHA256 [redis] accept=127.0.0.1:6381 connect=10.148.128.84:6380