redis ---- java 操作redis 及 redisClient可视化工具的安装使用
一、redis 的启动停止连接命令
ifconfig 查询ip
---------- redis-4.0.11(本机 linux7系统)------------
cd wslxm/redis/redis-4.0.11 切到redis目录
./src/redis-server redis.conf 启动 redis
./src/redis-cli -p 6379 shutdown save 关闭 redis
ps aux|grep redis 查询线程(ps aux所有线程)
./src/redis-cli -h 192.168.0.105 -p 6379 连接 redis,quit 退出连接
save: 更新到本地(硬盘),下次启动从本地读取
quit
其他
flushDB 清空当前db数据(db:数据库)
flushall 清空所有db数据
select 数据库选择(0 ~ 15)
info 获取服务器信息
dbsize 当前 db key的数量
keys* 返回所有key, keys map*( key 中 key)
exists key 是否存在
del 删除 key
rename 重命名 key
type 返回值类型(五种储存方式)
----------------- 其他命令 ---------------------------
EXPIRE key seconds 设置key的生存时间(单位:秒)
TTL key 查看key生于的生存时间
PERSIST key 清除生存时间
PEXPIRE key milliseconds 生存时间设置单位为:毫秒
二、redisClient可视化工具
下载地址:http://www.uzzf.com/soft/78115.html 下载后直接解压,无需安装,
开启redis服务后,直接运行 .exe 文件运行,输入信息连接即可,其中password,若redis服务为配置密码,则不用填。
成功后界面如下,默认数据库数量为16 db0-db15, 选择数据库(如果是命令行操作,默认是操作db0,要指定其他库,需要select 1(1为数据库下标)),新建自己想建的数据类型即可,这不像关系型数据库,并没有表的概念。
其使用非常简单,自己慢慢玩一会儿就会了的。
RedisClient是Redis客户端的GUI工具,使用Java swt和jedis编写,可以方便开发者浏览Redis数据库。该软件支持简体中文,非常适合国内用户使用,不需要汉化就可以直接使用。RedisClient将redis数据以资源管理器的界面风格呈现给用户,可以帮助redis开发人员和维护人员方便的建立,修改,删除,查询redis数据,完全不需要了解redis命令。可以让用户方便的编辑数据,可以剪切,拷贝,粘贴redis数据,可以导入,导出redis数据,可以对redis数据排序。
1、使用服务器管理,支持服务器密码认证
2、根据喜好管理redis数据
3、管理redis数据,包括:
新的redis数据:字符串String,列表List,哈希hash,集合set,有序集合Sorted set。
2、无法使用ip连接解决
遇到主机redis使用localhost和127.0.0.1都可以访问,但是使用主机ip访问就连接不上,三番查阅终得解药,拿好不谢!
1.打开 redis.conf 文件(redis 安装目录下)
2.将69行处 bind 127.0.0.1注释掉(加#注释)
3.将 88行处 protected-mode yes 改为protected-mode no;
4.重启redis服务,即可使用ip访问redis了
./src/redis-cli -p 6379 shutdown save 关闭 redis
./src/redis-server redis.conf 启动 redis
ps aux|grep redis 查看线程
./src/redis-cli -h 192.168.142.128 -p 6379 连接命令
注意:如果在生产环境中,只有主机访问redis,则不需要修改,保证redis数据安全,使用localhost或127.0.0.1访问即可!
3、无法连接防火墙放行
执行下面命令 - 防火墙放行 6379 端口
/sbin/iptables -I INPUT -p tcp --dport 6379 -j ACCEPT
三、java 操作redis(jedis)
redis --> nosql
1、键值对方式储存
2、主要用于大量数据的高服务负载
3、优势,快速查询(集群 --> 多台redis)
4、缺点,缺少关系结构
1、pom依赖
Springboot项目自动装配,非jedis===============
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-redis</artifactId>
<exclusions>
<exclusion>
<groupId>io.lettuce</groupId>
<artifactId>lettuce-core</artifactId>
</exclusion>
</exclusions>
</dependency>
Maven项目依赖=========================
<dependency>
<groupId>redis.clients</groupId>
<artifactId>jedis</artifactId>
<version>2.1.0</version>
</dependency>
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-lang3</artifactId>
<version>3.3.2</version>
</dependency>
**Jedis 依赖 (只需添加此依赖)
**==============================
<dependency>
<groupId>redis.clients</groupId>
<artifactId>jedis</artifactId>
</dependency>
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-pool2</artifactId>
<version>2.6.0</version>
</dependency>
2、jedis数据连接
1、连接方式一
优点:自行封装一个连接池对象,每次请求不用重复连接redis数据库
//=================================================================
//创建连接
public static void connection(){
JedisPoolConfig jpc = new JedisPoolConfig(); //创建redis连接池配置对象
jpc.setMaxIdle(20); //最大连接空闲数
jpc.setMaxTotal(50); //最大连接数
JedisPool jp = new JedisPool(jpc, "192.168.142.128", 6379); //创建连接池对象
Jedis jedis = jp.getResource();
//数据操作
jp.returnResource(jedis);
}
//=================================================================
2、连接方式二
缺点: jedis 每一次使用都会重新连接redis
public void test() {
Jedis jedis = new Jedis("192.168.100.132", 6379);//获取连接
jedis.set("address", "beijing"); //保存数据
String address = jedis.get("address"); //读取数据
jedis.close(); //关闭连接
}
3、连接工具类UtliRedis
public class UtliRedis {
//ip地址,端口可以抽离到配置文件
//==============创建连接池==================
public static JedisPool connection(){
//创建redis连接池配置对象
JedisPoolConfig jpc = new JedisPoolConfig();
//最大连接空闲数
jpc.setMaxIdle(20);
//最大连接数
jpc.setMaxTotal(50);
//创建连接池对象
JedisPool jp = new JedisPool(jpc, "192.168.142.128", 6379);
return jp;
}
//===============归还连接=================
public static void shutdown(JedisPool jp,Jedis jedis){
jp.returnResource(jedis);
}
//调用方法(main)
public static void main(String[] args) {
//获取连接 +
JedisPool jp = UtliRedis.connection();
//获取jedis对象
Jedis jedis = jp.getResource();
//保存数据到redis
jedis.set("name","wangsong");
//读取数据
String nmae = jedis.get("name");
System.out.println(nmae);
//归还连接
UtliRedis.shutdown(jp,jedis);
}
}
五、数据类型及api
数据类型:
1 、字符串(string)
2、散列(hash)
3、列表(set)
4、集合(list)
5、有序集合(storeset)
1、string 字符串
字符串 全为 键值对模式
(name”,“ws_兮")
------------方法大全 - 对应 linux 和 java方法 -----------------------------
set 添加数据(key存在覆盖原数据)
mset 添加数据(key存在覆盖原数据)
setnx 添加数据(key存在不·储存)
setex 添加数据 1.key 2.key有效期(秒) 3.value
append key不存在添加数据, key存在追加
get 读取数据key
mget 读取数据key
getrange 截取 1.key 2.开始 3、结束
getSet 获取并更改(类似set 覆盖数据)
del 删除数据(1-成功,0-失败)
flushDB 清空数据
strlen 获取值的长度
exists 判断 key是否存在(1-存在,0-不存在)
java 方法 和 linux 命令 --> 对应方法大全
linux命令举例列--------------------
set name ws_兮
get name
java举列--------------------------
value 可以使用集合
jedis.set("name", "ws_兮");
//单值取
jedis.get("name");
//多值存
jedis.mset(new String[]{"name"," ws_兮 ","age","18"});
//多值取
jedis.mget(new String[]{"name","age"});
-------------- 注 ----------------------
User对象 à json(string) à redis 可以使用 json ,
也把所有属性拼成一个 value 值 如:(”name“,“小爱,小美,小溪,小微”)
缺点:取值凌乱,value数据太多无法分辨
2、List 集合
有序,可以重复
key value
jedis.lpush(“lists”, “LinkedList”);
-----------方法大全 - 对应 linux 和 java方法 -----------------------------
lpush 向列表左填加元素
rpush 向列表右填加元素
LINSERT 插入元素(指定位置)
lrange 获取区间内元素(所有: 0 -1 )
lindex 获取指定索引值
lset 获取多个指定索引值
LLEN 获取元素个数(长度)
LPOP 列表左弹出一个元素(删除并返回)
RPOP 列表右弹出一个元素(删除并返回)
LTRIM 删除 指定范围元素
LREM 删除指定数量的指定值的元素 --> LREM key count value ||
count --> 负数:左边开始删除 正数:右边开始删除 0 :全部删除
----------------------- linux 命令实列 -------------------------------------
lpush list1 2 3 左添加(建议 --> key = list:1)
llen list 获取元素个数
lrange list 0 2 获取区间元素(0 2)
lrem list 5 lxm 删除 5个value 为 lxm 的元素(从左边)
--------------------------- java 实列 -----------------------------------------
value 值可以为集合
jedis.lpush("lists", "LinkedList"); //左添加
jedis.rpush("messages", "Hello how are you?") //右添加
jedis.lrange("messages", 0, -1) //获取区间值(索引)
jedis.llen("lists") //获取元素长度
jedis.lrem("lists", 1, "vector") //删除 1个为 vector 的值
jedis.ltrim("lists", 0, 1)) //删除 区间外的值
jedis.lset("lists", 0, "hello list!") //修改(指定索引)
jedis.sort("lists") //排序
jedis.lpop("lists") //列表出栈
jedis.lrange("lists", 0, -1) //整个列表出栈
jedis.flushDB() //清空数据
思路:
在redis中创建商品评论列表
用户发布商品评论,将评论信息转成json存储到list中。
用户在页面查询评论列表,从redis中取出json数据展示到页面。
定义商品评论列表key:
商品编号为1001的商品评论key:items: comment:1001
192.168.101.3:7001> LPUSH items:comment:1001 ‘{“id”:1,“name”:“商品不错,很好!!”,“date”:1430295077289}’
3、Set 列表
无序,不能重复
jedis.zadd(“key”,“value”);
-------------方法大全 - 对应 linux 和 java方法 ----------------------------
SADD 添加元素
SREM 删除元素
SMEMBERS 获取所有元素
SISMEMBER 判断是否存在元素(需指定 key和 value)
--------------------- linux 示列 ------------------------------------
sadd key a b c 添加
srem key b c 删除
------------------------java 示列 ---------------------------------
jedis.zadd("key","value"); //添加(value,可以为集合)
4、Hash 散列map
hash叫散列类型,字段值只能是字符串类型
key 字段名 字段值 key + name == map
如:(“key”,“name”,“ws-兮”)//根据 key + name 设置值
-------------------方法大全 - 对应 linux 和 java方法 -----------------------------
HSET 设置单值 无字段添加返回 1,有字段覆盖返回 0
HMSET 设置多值
HSETNX 字段不存在添加值
hincrBy 追加值
HGET 取值
HMGET 取多值,根据设置方式去
HGETALL 取所有 key下的值
HKEYS 只取字段名,不取 字段值(字段值 == value)
HVALS 只取 字段值,不取字段名,
HEXISTS 判断字段是否存在
HLEN 获取字段值的数量
HDEL 删除 (成功 返回 1,失败 0)
flushDB 清空
------------------------- linux 命令举例---------------------------------------
hset user name 小艾 存单值
hget user name 取单值
hmset user id 1 name ws age 20 存多值
hmget user id name age 取多值
------------------java jedis 举例 -------------------------
jedis.hset("kid", "name","小艾"); 存单值
jedis.hget("kid", "name"); 取单值
jedis.hdel("kid", "name") 删除
jedis.hmset("kid", map); 存多值,map = 键值对
jedis.hmget("kid"); 获取多值 --> map集合
jedis.hkeys("kid") 获取所有 map的 key
jedis.hvals("kid") 获取使用 map的 value
jdis.hlen("kid") 获取集合长度
jedis.hdel("kid","age"); 删除 map 中的某的值
jedis.exists("kid") 是否存在
jedis.flushDB() 清空数据
建议用法 ----------
HGETALL items:1001
- “id”
- “3”
- “name”
- “apple”
- “price”
- “999.9”
key = 对象名+ :id (如 items:1001) -->
这样可以通过 对象名+ :id获取对应id 的 map集合属性
5、sorted set 有序集合
有序 – 按分数排序
key 分数 value
jedis.zadd(“hackers”, 1940, “Alan Kay”);
-------------方法大全 - 对应 linux 和 java方法 --------------------------------
zadd 添加 (值:分数+value)
ZRANGE 获取指定索引的区间值 (从小到大排序)
ZREVRANGE 获取指定索引的区间值 (从大到小排序)
ZRANGEBYSCORE 获取指定分数的区间值
ZSCORE 获取分数 (key + value)
ZINCRBY 增加分数
ZCARD 获取元素数量
ZCOUNT 获取元素数量(指定分数范围)
ZRANK 获取元素排名(小到大)
ZREVRANK 获取元素排名(大到小)
zrem 删除(key + value)
ZREMRANGEBYRANK 删除(索引范围)
ZREMRANGEBYSCORE 删除(分数范围)
---------------------------- linux 示·列-----------------------------------------------
zadd key 80 zhangsan 89 lisi 添加(分数存在更新分数)
zrange key 0 2 获取指定索引的区间值(从小到大)
zrange key 0 1 WITHSCORES 同上( + 外加获取分数)
---------------------------- java 示·列 -----------------------------------------------
value 值可以为集合
jedis.zadd("hackers", 1940, "Alan Kay"); //添加
jedis.zrange("hackers", 0, -1) //获取区间值(小到大)
jedis.zrevrange("hackers", 0, -1) //获取区间值(大到小)
jedis.zscore("zset", "value") //获取value值的分数
jedis.zcard("zset") //获取元素数量
jedis.zrem("zset", "zset!") //删除
jedis.flushDB() //清空数据
- 本文到此结束,如果觉得有用,动动小手点赞或关注一下呗,将不定时持续更新更多的内容…,感谢大家的观看!
关注公众号【兮家】,不定时分享干货内容哦
更多推荐
所有评论(0)