一、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

  1. “id”
  2. “3”
  3. “name”
  4. “apple”
  5. “price”
  6. “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()                    //清空数据                 
  • 本文到此结束,如果觉得有用,动动小手点赞或关注一下呗,将不定时持续更新更多的内容…,感谢大家的观看!

关注公众号【兮家】,不定时分享干货内容哦
在这里插入图片描述

GitHub 加速计划 / li / linux-dash
10.39 K
1.2 K
下载
A beautiful web dashboard for Linux
最近提交(Master分支:2 个月前 )
186a802e added ecosystem file for PM2 4 年前
5def40a3 Add host customization support for the NodeJS version 4 年前
Logo

旨在为数千万中国开发者提供一个无缝且高效的云端环境,以支持学习、使用和贡献开源项目。

更多推荐