redis安装配置

redis

一. 安装

  1. 首先需要gcc的环境
- yum group install
- 或者 yum install gcc  automake autoconf  libtool  make
  1. 安装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
  1. 启动redis
cd /usr/local/redis/bin
./redis-server
  1. 启动客户端
./bin/redis-cli

启动格式如下:
    redis-cli -h ip  -p port

二. 配置文件

  1. 拷贝源码文件中的redis.conf文件
cp redis.conf  /usr/local/redis

  1. 配置文件详解
参数解释
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:不进行删除操作,内存溢出后,报错返回
  1. 需要配置的选项:
daemonize no 改为yes
bind 注释
requirepass 设置密码

  1. 启动时增加配置文件
./bin/redis-server ./redis.conf
  1. 启动客户端验证
./bin/redis-cli -h 192.168.9.128 -p 6379 -a password
  1. 客户端验证命令
ping
set grade 2
keys *
  1. redis关闭
    1. kill命令:数据没有持久到文件中
    2. 在客户端中输入shutdown命令,数据会持久到文件中。

三. redis常用命令

  1. 管理键

    • 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的类型

  2. 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());
posted @ 2019-10-18 10:18  deepsmile  阅读(116)  评论(0)    收藏  举报