首页 / REDIS / Redis简介以及简单操作
Redis简介以及简单操作
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了Redis简介以及简单操作,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含5918字,纯文字阅读大概需要9分钟。
内容图文
![Redis简介以及简单操作](/upload/InfoBanner/zyjiaocheng/891/e8bd03c6afe341e1b6aba6f15b28033c.jpg)
Redis简介
- Redis是一个面向键值对数据类型的内存数据库,可以满足我们对海量数据的快速读写的需求
- 是一个nosql 非关系型数据库
- Redis的键只能是字符串类型的 值可以是很多种数据类型
- String 字符串
- hash 哈希
- list 字符串列表
- set 字符串集合
- sorted set 有序字符串集合
- Redis的特点
- 高性能:读11w/s 写8.1w/s 是一个单线程的服务
- 原子性:保证数据的准确性
- 持久存储:(RDB快照、AOF日志}
- 主从结构
- 支持集群 3.0以后
- 应用场景
- 以新浪微博为例
- hash 关注列表 粉丝列表等
- String 微博数量粉丝数量
- sorted set 热门微博、TopN
- 注意:Redis使用c语言写的 我们安装Redis之前需要先配置好c语言编译环境
- Redis的基础指令
- keys ? * [] ? 等查看符合规则的key 生产环境下禁用
- exists key 判断一个键是否存在
- del key1 key2 … 删除键值对
- help 查看帮助
- quit / exit 退出客户端
- 注意:Redis的命令不区分大小写
- Redis数据库的特性
- 多数据库
- 每个数据库对外就是以一个从0开始的递增的数字命名,不支持自定义
- Redis默认支持16个数据库,可以通过修改database这个参数来修改默认值
- Redis默认选择的是0号数据库
- select 数字 可以选择数据库
- 多个数据库之间并不是完全隔离的
- flushall:清空Redis实例下的所有数据
- flushdb 清空当前数据库中的所有数据
- 多数据库
Redis常用数据类型
String
-
string类型是Redis最基本的数据类型,他可以存储任何形式的数据,包含二进制数据等。一个字符串类型的值存储的最大容量是1GB
-
添加数据
-
set k v
-
127.0.0.1:6379> set k1 v1 OK
-
一次添加多条数据
-
mset k2 v2 k3 v3
-
127.0.0.1:6379> mset k2 v2 k3 v3 OK
-
-
获取数据
-
get k1
-
127.0.0.1:6379> get k1 "v1"
-
mget k2 k3
-
127.0.0.1:6379> mget k2 k3 1) "v2" 2) "v3"
-
-
递增递减
-
incr 递增 decr 递减
-
127.0.0.1:6379> set num 1 OK 127.0.0.1:6379> incr num (integer) 2 127.0.0.1:6379> decr num (integer) 1
-
-
根据指定类型递增递减
-
incrby 递增 decrby 递减
-
127.0.0.1:6379> incrby num 2 (integer) 3 127.0.0.1:6379> decrby num 2 (integer) 1
-
以浮点数自增 不能以浮点数自减
-
127.0.0.1:6379> incrbyfloat num 1.1 "2.1" 127.0.0.1:6379> decrbyfloat num 1.1 (error) ERR unknown command 'decrbyfloat'
-
-
获取长度
-
127.0.0.1:6379> set k asdsad OK 127.0.0.1:6379> get k "asdsad" 127.0.0.1:6379> strlen k (integer) 6
-
hash
-
hash类型的值存储了字段以及字段值的映射,字段和字段值只能是字符串,不支持其他的数据类型。hash的键之多能存储2^32-1个字段
-
添加数据
-
127.0.0.1:6379> hset user name zs (integer) 1 127.0.0.1:6379> hmset users name ls age 18 OK
-
-
获取数据
-
127.0.0.1:6379> hget user name 获取指定k的值 "zs" 127.0.0.1:6379> hmget users name age 获取指定k的值多个 1) "ls" 2) "18" 127.0.0.1:6379> hlen users 获取k的数量 (integer) 2 127.0.0.1:6379> hkeys users 获取所有k 1) "name" 2) "age" 127.0.0.1:6379> hvals users 获取所有v 1) "ls" 2) "18" 127.0.0.1:6379> hgetall users 获取所有kv对 1) "name" 2) "ls" 3) "age" 4) "18"
-
-
判断一个hash中是否存在某一个key
-
127.0.0.1:6379> hexists user name (integer) 1 127.0.0.1:6379> hexists user age (integer) 0
-
-
递增
- hincrby hash类型没有hincr命令
-
删除数据
- hdel
List
- 是一个有序的字符串类型的列表,列表内部实现是使用双向链表实现的
- list还可以作为队列使用 例如先进先出队列
- 一个列表类型的键最多可以容纳2的32次方-1个元素
- 常用指令
- lpush/rpush/lpop/rpop 从左/从右添加数据 从左/从右取出数据
- llen/lrange 获取列表的长度 获取列表指定范围的值查看所有 0 -1
- lindex 查询指定角标位置的数据
- lset 修改指定角标的值
set
- set 集合中的所有元素都是不重复的 无序的
- 一个集合类型的键最多存储2的32次方-1个元素
- 常用命令
- sadd/smembers/srem/sismember
- 向集合中添加元素 获取集合汇总元素数量 删除集合中指定值的元素不存在即删除失败返回值为0 成功返回值为1 查看某个指定值是否存在
- sdiff 差集
- sinter 交集
- sunion 并集 直接返回结果
- sdiffstore/sinterstore/sunionstore 结果存在另一个指定的集合中
- scard 获取集合的长度
- sadd/smembers/srem/sismember
sorted set
- 有序集合在集合的基础上为每一个元素都关联一个分数,根据分数可以进行排序获取分数最高的几个元素等
- 常用指令
- zadd 向指定的key添加指定分数的值
- zscore 查看指定值的分数
- zrange 获取分值前几名 小到大
- zrevrange 获取分值前几名 倒序 达到小
- zrangebyscore 根据分值获取指定元素 默认是闭区间 可使用“(”来使用开区间
- zincrby 指定元素分值自增
- zcard 获取集合中的元素个数
- zcount 获取指定分值范围内的元素
- zrem 删除集合中的指定元素
Java操作Redis
-
简单单机连接
-
package jredistest.jredisa; import redis.clients.jedis.Jedis; /** * 简单单机连接 * @author zhao * */ public class RedisDemo01 { public static void main(String[] args) { Jedis jedis = new Jedis("192.168.32.110",6379); jedis.set("aaa", "111"); String value =jedis.get("str1"); System.out.println(value); jedis.close(); } }
-
-
连接池连接
-
package jredistest.jredisa; import redis.clients.jedis.Jedis; import redis.clients.jedis.JedisPool; import redis.clients.jedis.JedisPoolConfig; /** * 单机连接池 * * @author zhao * */ public class jredisDeml { public static void main(String[] args) { //连接池的配置信息 JedisPoolConfig poolConfig = new JedisPoolConfig(); //连接池中最大空闲连接数 poolConfig.setMaxIdle(10); //连接池中最多允许创建的连接数 poolConfig.setMaxTotal(100); //创建链接的最大等待时间 poolConfig.setMaxWaitMillis(2000); //表示从连接池中取出链接的时候都会测试一下,这样可以保证取出的链接都是可用的 poolConfig.setTestOnBorrow(true); //获取连接池 JedisPool jedisPool = new JedisPool(poolConfig, "192.168.32.110", 6379); //从连接池中获取一个jedis链接 Jedis jedis = jedisPool.getResource(); String value = jedis.get("str"); System.out.println(value); //是把链接还给连接池 jedis.close(); //关闭连接池 jedisPool.close(); } } package jredistest.jredisa; import redis.clients.jedis.Jedis; import redis.clients.jedis.JedisPool; import redis.clients.jedis.JedisPoolConfig; public class jidisTest1 { private jidisTest1(){} private static JedisPool jedisPool=null; /** * 从连接池中获取连接 * @return */ public static synchronized Jedis getJedis() { if(jedisPool==null) { JedisPoolConfig jedisPoolConfig = new JedisPoolConfig(); //指定连接池中最大空连接数 jedisPoolConfig.setMaxIdle(10); //指定连接池中最大连接数 jedisPoolConfig.setMaxTotal(100); //设置最大连接超时时间 jedisPoolConfig.setMaxWaitMillis(2000); jedisPoolConfig.setTestOnBorrow(true); jedisPool = new JedisPool(jedisPoolConfig,"192.168.32.110",6379); } return jedisPool.getResource(); } /** * 返还连接池连接 * @param jedis */ public static void returnResource(Jedis jedis) { jedis.close(); } /** * 关闭连接池 */ public static void closePool() { jedisPool.close(); } }
-
内容总结
以上是互联网集市为您收集整理的Redis简介以及简单操作全部内容,希望文章能够帮你解决Redis简介以及简单操作所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。