Redis
redis是一个key-value存储系统。和Memcached类似,它支持存储的value类型相对更多,包括string(字符串)、list(链表)、set(集合)、zset(sorted set --有序集合)和hash(哈希类型)。这些数据类型都支持push/pop、add/remove及取交集并集和差集及更丰富的操作,而且这些操作都是原子性的。在此基础上,redis支持各种不同方式的排序。与memcached一样,为了保证效率,数据都是缓存在内存中。区别的是redis会周期性的把更新的数据写入磁盘或者把修改操作写入追加的记录文件,并且在此基础上实现了master-slave(主从)同步。
Redis 是一个高性能的key-value数据库。 redis的出现,很大程度补偿了memcached这类key/value存储的不足,在部 分场合可以对关系数据库起到很好的补充作用。它提供了Java,C/C++,C#,PHP,JavaScript,Perl,Object-C,Python,Ruby,Erlang等客户端,使用很方便。
特点:
- 开源免费
- 存在缓冲(内存中),查询速度快
- 可以存储基本数据类型,对象和集合等格式
- 不支持SQL
- 没有多表查询
- 不支持事务
下载:
官网
- linux:5.0
- windows:3.2
- 绿色版
- 安装版
中文网
(这里我们选择windows绿色版)
解压完成以后如下
首先先开服务器:redis-server.exe出现以下界面
然后在开启客户端:redis-cli.exe
如果开启服务器的时候出现闪退我们可以打开cmd,进入文件所在所在路劲输入redis-server.exe redis.windows.conf (服务器后面跟上配置文件即可打开,然后在开启客户端进行操作)
数据类型:
string字符串类型
- set key value
- get key
- del key
hash哈希类型-Map
- hset mapname key value
- hget mapname key
- hgetall mapname
- hdel mapname key1 key2
list列表类型-LinkedList
- lpush key value
- rpush key value
- lrange key start end
- lpop key
- rpop key
- lset key index value
set集合类型
- sadd key value
- smembers key
- srem key value
zset有序集合类型 - zadd key score value
- zrange key start end
- zrange key 0 -1 widthscore
- zrem key value
命令:
- 查询所有键:keys *
- 获取键对应的value的类型:type key
- 删除指定key及value : del key
以服务运行
配置环境变量
- 在解压的 Redis 文件目录下,输入命令 redis-server.exe --service-install
redis.windows.conf --loglevel verbose (后边的 verbose 表示: 详尽,相当于Java中的
debug级别) - 开启服务 redis-server --service-start
- 关闭服务 redis-server --service-stop
- 卸载服务 redis-server --service-uninstall
- 服务重命名 redis-server --service-name server-name
java操作Redis
- jedis-2.9.0.jar
- Jedis jedis = new Jedis(“localhost”,6379)
- jedis.close()
- 不同数据类型的操作
- commons-pool2-2.2.jar
- JedisPoolConfig config = new JedisPoolConfig()
- JedisPool jedisPool = new JedisPool(config,“localhost”,6379)
- Jedis jedis = jedisPool.getResource()
- JedisUtil
持久化
RDB
- 默认
- 在一段时间间隔,检测key的变化情况,然后持久化
-
save 900 1
-
save 300 10
-
save 60 10000
AOF
-
日志记录方式
开启
- appendonly yes
-
记录每一条命令的操作
-
间隔 ,然后持久化
1. # appendfsync always 2. appendfsync everysec 3. # appendfsync no