Java高级技术:Redis

232 篇文章 0 订阅
219 篇文章 0 订阅

Java高级技术:Redis

Redis 简介 :

Remote Dictionary Server(Redis)是一个开源的使用ANSIC语言编写、支持网络、可基于内存亦可持久化的日志型、Key-Value 数据库,并提供多种语言的 API。

Redis 的特点 :

优点: 
1. 支持多种数据结构,如 string(字符串)、 list(双向链表)、dict(hash 表)、set(集合)、 zset(排序 set)、hyperloglog(基数估算) 
2. 支持持久化操作,可以进行 aof 及 rdb 数据持久化到磁盘,从而进行数据备份或数 据恢复等操作,较好的防止数据丢失的手段。 
3. 支持通过Replication进行数据复制,通过master-slave机制,可以实时进行数据的 同步复制,支持多级复制和增量复制,master-slave 机制是 Redis 进行 HA 的重要手段。 
4. 单进程请求,所有命令串行执行,并发情况下不需要考虑数据一致性问题。 


安装Redis单机版 :

   第一步 需要在 linux 系统中安装 gcc 
   命令:yum install -y gcc-c++ 
 
 
   第二步 需要将下载好的 redis 压缩包添加到 linux 服务器中 
   版本:redis-3.0.0.tar.gz 
   redis 的版本:副版本号奇数版本号是测试版,不建议在生产环境中使用。 
   偶数版本时稳定版建议在生产环境中使用。
   3.0 版本更新比较大。集成了集群技术 
 
 
   第三步 解压压缩包 
   命令:tar -zxvf redis...... 
 
 
   第四步 编译 redis 
   命令:进入 redis 的解压完毕的根目录下 执行命令:make 


   第五步 安装 redis 
   命令:进入 redis 的解压完毕的根目录下,执行命令: make install 
   PREFIX=/usr/local/redis 
 
 
   第六步:启动 redis 
   1,前端启动 
   在 bin 目录下执行命令: ./redis-server (ctrl+c)退出 redis 
 
 
   2.后端启动
   (1)先将 redis 解压目录下的 redis.conf 文件拷贝到 安装好的 redis 的 bin 目录下 
   命令:cp redis.conf /usr/local/redis/bin 
 
 
   (2)修改拷贝过来的 redis.conf 配置文件
   命令:vim redis.conf 
   将 daemonize no 改为 yes 
 
 
   (3)启动 redis
   在 bin 目录下执行命令:./redis-server redis.conf 
 
 
   (4)查看 redis 启动是否成功 
   输入命令:ps aux|grep redis 
 
 
   (5) 关闭 redis 的命令
   ./redis-cli shutdown 
 
 
   第七步:测试 redis 
   在 bin 目录下启动 redis 自带的客户端 ./redis-cli
   常见 redis 命令: 
   ping--->pong 
 



Redis 数据类型

1:String(字符串) 
Redis 字符串是字节序列。Redis 字符串是二进制安全的,这意味着他们有一个已知的 长度没有任何特殊字符终止,所以你可以存储任何东西,512 兆为上限 
示例: 
redis 127.0.0.1:6379> SET name kevin OK
redis 127.0.0.1:6379> GET name "kevin" 
 
incr 让当前键值以 1 的数量递增,并返回递增后的值
incrby 可以指定参数一次增加的数值,并返回递增后的值
decr 让当前键值以 1 的数量递减 并返回递减后的值
decrby 可以指定参数一次递减的数值,并返回递减后的值
incrbyfloat 可以递增一个双精度浮点数
append 作用是向键值的末尾追加 value。如果键不存在则将该键的值设置为 value。
返回值是追加后字符串的总长度。
mget/mset 作用与 get/set 相似,不过 mget/mset 可以同时获得/设置多个键的键值 del 根据 key 来删除 value
flushdb 清除当前库的所有数据

2:Hash(hash 表)

   Redis 的哈希是键值对的集合。 Redis 的哈希值是字符串字段和字符串值之间的映射, 因此它们被用来表示对象 
 示例: 
 redis 127.0.0.1:6379> HSET key field value OK
 redis 127.0.0.1:6379> HGET key field value 
 hset 存储一个哈希键值对的集合 hset key field value 
 hget 获取一个哈希键的值 hget key field 
 hmset 存储一个或多个哈希是键值对的集合 hmset key field1 value1 ......fieldN keyN 
 hmget 获取多个指定的键的值 hmget key field1 ... fieldN 
 hexists 判断哈希表中的字段名是否存在 如果存在返回 1 否则返回 0 
 hexists key field 
 hdel 删除一个或多个字段 hdel key field 
 hgetall 获取一个哈希是键值对的集合 hgetall key 
 hvals 只返回字段值 hvals key 
 hkeys 只返回字段名 hkeys key 
 hlen 返回 key 的 hash 的元素个数 hlen key


3:List(链表)

   Redis 的链表是简单的字符串列表,排序插入顺序。您可以添加元素到 Redis 的列表的 头部或尾部 
 示例: 
 redis 127.0.0.1:6379> lpush tutoriallist redis (integer) 1
 redis 127.0.0.1:6379> lpush tutoriallist mongodb (integer) 2 
 redis 127.0.0.1:6379> lpush tutoriallist rabitmq (integer) 3
 redis 127.0.0.1:6379> lrange tutoriallist 0 10 1) "rabitmq" 
 2) "mongodb"
 3) "redis
 lpush key value 向链表左侧添加 rpush key value 向链表右侧添加 
 
 
 
 lpop key 从左边移出一个元素
 rpop key 从右边移出一个元素
 llen key 返回链表中元素的个数 相当于关系型数据库中 select count(*)
 lrange key start end lrange 命令将返回索引从 start 到 stop 之间的所有元素。Redis 的列 
 表起始索引为 0。
 lrange 也支持负索引 lrange nn -2 -1 如 -1 表示最右边第一个元素 -2 表示最右边第二 
 个元素,依次类推。
 lindex key indexnumber 如果要将列表类型当做数组来用,lindex 命令是必不可少的。 
 lindex 命令用来返回指定索引的元素,索引从 0 开始 如果是负数表示从右边开始计算的索引,最右边元素的索引是-1。 
 Lset key indexnumber value 是另一个通过索引操作列表的命令,它会将索引为 index 的元素赋值为 value。 

4:Set(集合)

    Redis 的集合是字符串的无序集合。 示例:
 redis 127.0.0.1:6379> sadd tutoriallist redis (integer) 1 
 redis 127.0.0.1:6379> sadd tutoriallist mongodb (integer) 1
 redis 127.0.0.1:6379> sadd tutoriallist rabitmq (integer) 1 
 redis 127.0.0.1:6379> sadd tutoriallist rabitmq (integer) 0
 redis 127.0.0.1:6379> smembers tutoriallist
 1) "rabitmq" 
 2) "mongodb" 3) "redis" 
 sadd key value 添加一个 string 元素到,key 对应的 set 集合中,成功返回 1,如果元素已经在集合中返回 0
 scard key 返回 set 的元素个数,如果 set 是空或者 key 不存在返回 0
 smembers key 返回 key 对应 set 的所有元素,结果是无序的
 sismember key value 判断 value 是否在 set 中,存在返回 1,0 表示不存在或者 key 不存 
 在
srem key value 从 key 对应 set 中移除给定元素,成功返回 1,如果 value 在集合中不存 
在或者 key 不存在返回 0

 

5:SortedSet(有序集合)zset

 Redis 的有序集合类似于 Redis 的集合,字符串不重复的集合。 示例:
 redis 127.0.0.1:6379> zadd tutoriallist 0 redis
 (integer) 1 
 redis 127.0.0.1:6379> zadd tutoriallist 0 mongodb (integer) 1
 redis 127.0.0.1:6379> zadd tutoriallist 0 rabitmq (integer) 1 
 redis 127.0.0.1:6379> zadd tutoriallist 0 rabitmq
 (integer) 0
 redis 127.0.0.1:6379> ZRANGEBYSCORE tutoriallist 0 1000 1) "redis"
 2) "mongodb"
 3) "rabitmq" 
 zadd key score value 将一个或多个 value 及其 socre 加入到 set 中 
 zrange key start end 0 和-1 表示从索引为 0 的元素到最后一个元素(同 LRANGE 命令 相似) 
 zrange key 0 -1 withscores 也可以连同 score 一块输出,使用 WITHSCORES 参数 zremrangebyscore key start end 可用于范围删除操作 

 


6:Redis 中的其他命令

ping 测试 redis 是否链接 如果已链接返回 PONG
 echo value 测试 redis 是否链接 如果已链接返回 echo 命令后给定的值
 keys * 返回所有的 key 可以加*通配
 exists key 判断 string 类型一个 key 是否存在 如果存在返回 1 否则返回 0
 expire key time(s) 设置一个 key 的过期时间 单位秒。时间到达后会删除 key 及 value ttl key 查询已设置过期时间的 key 的剩余时间 如果返回-2 表示该键值对已经被删除 persist 移除给定 key 的过期时间
 select dbindex 选择数据库(0-15)
 move key dbIndex 将当前数据库中的 key 转移到其他数据库中
 dbsize 返回当前数据库中的 key 的数目
 info 获取服务器的信息和统计
 flushdb 删除当前选择的数据库中的 key 
 flushall 删除所有数据库中的所有 key quit 退出连接 

 

小编是一个有着5年工作经验的java'开发工程师,关于java'编程,自己有做材料的整合,一个完整的java编程学习路线,学习材料和工具,能够进我的群收取,免费送给**830783865**大家,希望你也能凭着自己的努力,成为下一个优秀的程序员。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值