redis安装配置
redis
一. 安装
- 首先需要gcc的环境
- yum group install
- 或者 yum install gcc automake autoconf libtool make
- 安装redis
wget http://....redis的路径
tar xvf redis-4.0.1.tar.gz
cd redis-4.0.1
make MALLOC=libc PREFIX=/usr/local/redis
make install
- 启动redis
cd /usr/local/redis/bin
./redis-server
- 启动客户端
./bin/redis-cli
启动格式如下:
redis-cli -h ip -p port
二. 配置文件
- 拷贝源码文件中的redis.conf文件
cp redis.conf /usr/local/redis
- 配置文件详解
| 参数 | 解释 |
|---|---|
| daemonize no | 默认不是以守护进程的方式运行 |
| pidfile /var/run/redis.pid | 指定pid文件 |
| port 6379 | 默认端口号 |
| bind 127.0.0.1 | 绑定ip |
| timeout 300 | 客户端闲置多久后关闭连接,如果指定为0,表示关闭该功能 |
| loglevel verbose | 支持4个级别: debug,verbose,notice,warning 默认为verbose |
| databases 16 | 设置数据库的数量 |
| save <seconds> <changes> | 指定多久进行多少次的更新工作默认有三个: save 900 1 save 300 10 save 60 10000 分别表示:900秒内1个更改,300秒内10个更改以及60秒内10000个更改 |
| rdbcompression yes | 本地数据库是否压缩 默认为yes |
| dbfilename dump.rdb | 指定本地数据库的文件名 默认为:dump.rdb |
| dir ./ | 指定本地数据库存放目录,./表示当前目录 |
| requirepass forbared | 设置redis的连接密码,如果配置了连接密码,客户端的链接时需要通过auth<password>命令提供密码,默认为关闭。java源需要设置。 |
| maxclients 128 | 默认最大链接客户端 |
| maxmemory <bytes> | 达到最大内存后,redis会尝试清除已经过期或者即将过期的key,当此方法处理后,仍然达到了最大内存,将无法进行写入操作,但是仍然可以进行读取操作。redis的新VM机制,会把key存放到内存,value存放到swap区。 内存解决方案: 1、设置超时时间,设定内存空间,建议1G的空间,建议内存大小为:256-512m 2、采用LRU算法动态的把不用的数据进行删除。 |
LRU:内存管理的一种页面置换算法,对于的内存中的数据块进行管理,常用的几种算法:
volatile-lru:设定超时时间的数据中,删除最不常用的数据
allkeys-lru:查询所有的key中最近最不常使用的数据进行删除,这是最广泛使用的策略
volatile-lfu:
allkeys-lfu:
volatile-random:设定超时时间的数据中,随机删除
allkeys-random:所有key 随机删除
volatile-ttl:查询全部设定超时时间的数据,之后排序。将马上过期的数据进行删除操作
noeviction:不进行删除操作,内存溢出后,报错返回
- 需要配置的选项:
daemonize no 改为yes
bind 注释
requirepass 设置密码
- 启动时增加配置文件
./bin/redis-server ./redis.conf
- 启动客户端验证
./bin/redis-cli -h 192.168.9.128 -p 6379 -a password
- 客户端验证命令
ping
set grade 2
keys *
- redis关闭
- kill命令:数据没有持久到文件中
- 在客户端中输入shutdown命令,数据会持久到文件中。
三. redis常用命令
-
管理键
-
del key : 删除key
-
dump key: 序列化指定key
-
exists key : 检查是否存在
-
expire key seconds :为指定的key设置过期时间(以秒计)
-
pexpire key milliseconds :设置过期时间,以毫秒计。
-
ttl key : 以秒为单位,返回指定key的剩余生存时间(TTL,time to live)
-
PTTL key:以毫秒为单位,返回指定key的剩余生存时间
-
persist key:移除key的过期时间,key将持久保持。
-
keys pattern:查找指定模式匹配的key
-
random key:从当前key中随机返回key
-
rename key newkey:修改key的名称
-
move key db :移动key到指定的db
-
select 0-15 : 选择数据库
-
type key : 返回key的类型
-
-
key的命名建议
redis单个key存入512M大小
- key不要太长,尽量不要超过1024字节,不仅消耗内存,降低查找的效率
- key不要太短,降低可读性
- 最好统一命名 user:123:password
- key区分大小写 grade Grade是两个不同的key
四. redis数据类型
redis支持五种数据类型:string hash list set zset(有序集合)等
String
string是redis的基本数据类型,一个key对应一个value。
string类型是二进制安全的。意思就redis的string可以包含任何数据。比如jpg或者对象的序列化对象<br>
string类型就redis的基本数据类型,一个键最大能存储512MB
二进制安全是指,在传输数据时,保证二进制数据的信息安全,也就是不被篡改,破译。
二进制安全的特点:
1、编码解码在客户端完成,执行效率高
2、不需要频繁的编解码,不会出现乱码
String命令:
********************************************************************************
增加:
1,set key_name value 设置给定key的值,如果key已经存储了值,复写旧值
2,**setnx key value 只有的key不存在时设置可以的值,setnx(set if Not eXists)
3,mset key value [key value...] 设定多个值
********************************************************************************
删除:
1, get keyname 如果不存在,返回null 如果存储的不是字符串类型,返回一个错误
2,getrange key start end 获取value值从start开始到end结束
3,getbit key offset 对key所存储的字符串值获取指定偏移量上的位
4,mget key1 key2 获取所有给定key的值
5,getset key_name value 设置指定key的值,并返回key的旧值,当key不存在时,返回nil
6,strlen key 返回key所储存的字符串的长度
********************************************************************************
删除
1,del key_name 删除指定key
********************************************************************************
自增,自减
1,**incr key_name incr命令将key中存储的数字值增1,如果key不存在,那么key的值会初始化为1
然后再执行incr操作
2,**decr key_name decr 将key中存储的数字减1
3,incrby keyname num 存储的数字加上指定的变量 incrby topic:num 10
4,decrby keyname num 存储的数字减去指定的变量 decrby topic:num 10
5,append key_name value
应用场景
1, String 通常用于保存单个字符串或json字符串数据
2,因String就二进制安全的,可以把图片文件的内容作为字符串来存储
3,计数器
incr本身具有原子操作的特性,所以可以利用redis的incr,incrby decr来实现计数统计
哈希(Hash)
redis hash 是一个string类型的field和value的映射表,hash适用于存储对象。可以
看成具有key和value的map容器,该类型适合于存储对象信息,如uname,upass ,age等,占用较少的磁盘空间
hash命令:
赋值:
hash 存储对象
users(id,name,age,remark)
hset key field value //为指定的key,设定field/value
hset h1 name zhangsan
hmset key field value filed1 value1
hmset users uname guo age 20 address "北京市"
取值:
hget key field
hmget key field [field1] 获取key所给定字段的值
hgetall key 返回hash表中所有的字段和值
hkeys key 获取所有哈希表中的字段
hlen key 获取哈希表中字段的数量
删除:
hdel key field1[field2]
其他语法:
hincrby key field increment 为hash表key中的指定字段的整数值加上增量increment。
hincrbyfloat key field increment 为hash表中的指定字段的浮点数加上增量increment.
hexists key field 查看哈希表key中,指定字段是否存在
五. java连接redis
Jedis/Redission/Jredis/JDBC-Redis等 推荐使用:Jedis和Redission。 常用 Jedis
java端要有redis驱动java的配置如下:
<!--Redis-->
<dependency>
<groupId>redis.clients</groupId>
<artifactId>jedis</artifactId>
<version>2.4.2</version>
</dependency>
Jedis连接建立:
Jedis jedis=new Jedis("192.168.20.131",6379);
jedis.auth("123456");
System.out.println(jedis.ping());
浙公网安备 33010602011771号