keys *:查看当前库所有key (匹配:keys *1)
exists key:判断某个key是否存在
type key:查看你的key是什么类型
del key:删除指定的key数据
unlink key:根据value选择非阻塞删除(仅将keys从keyspace元数据中删除,真正的删除会在后续异步操作。)
expire key 10:10秒钟:为给定的key设置过期时间
ttl key:查看还有多少秒过期,-1表示永不过期,-2表示已过期select:命令切换数据库
dbsize:查看当前数据库的key的数量
flushdb:清空当前库
flushall:通杀全部库
//给(key)name设置值 127.0.0.1:6379> set name lucy OK 127.0.0.1:6379> set age 10 OK //查看所有键(key) 127.0.0.1:6379> keys * 1) "age" 2) "name" //查看key的类型 127.0.0.1:6379> type age string 127.0.0.1:6379> type name string //判断key是否存在 127.0.0.1:6379> exists age (integer) 1 127.0.0.1:6379> exists username (integer) 0 //删除指定的键 127.0.0.1:6379> del age (integer) 1 127.0.0.1:6379> keys * 1) "name" //给指定key设置过期时间 127.0.0.1:6379> expire name 10 (integer) 1 //查看指定key过期时间 127.0.0.1:6379> ttl name (integer) 4 127.0.0.1:6379> ttl name (integer) -2 127.0.0.1:6379> ttl name (integer) -2 127.0.0.1:6379> set sex 0 OK //查看当前数据库key的数量 127.0.0.1:6379> dbsize (integer) 1 //切换下标为1的数据库,(数据库的下标从0开始) 127.0.0.1:6379> select 1 OK 127.0.0.1:6379[1]> set name cat OK //切换下标为0的数据库 127.0.0.1:6379[1]> select 0 OK 127.0.0.1:6379> set age 10 OK //清空所有数据库的数据 127.0.0.1:6379> flushall OK //以下命令验证是否清空成功 127.0.0.1:6379> dbsize (integer) 0 127.0.0.1:6379> select 1 OK 127.0.0.1:6379[1]> dbsize (integer) 0 127.0.0.1:6379[1]> select 0 OK1.2、String类型常用命令
set
:添加键值对 get
:查询对应键值 append
:将给定的 追加到原值的末尾 strlen
:获得值的长度 setnx
:只有在 key 不存在时 设置 key 的值 incr
:将 key 中储存的数字值增1,只能对数字值操作,如果为空,新增值为1 decr
:将 key 中储存的数字值减1,只能对数字值操作,如果为空,新增值为-1 incrby / decrby
<步长>:将 key 中储存的数字值增减。自定义步长。 getrange
<起始位置> <结束位置>:获得值的范围,类似java中的substring,(前包,后包) setrange
<起始位置> :用 覆写 所储存的字符串值,从<起始位置>开始(**索引从0开始)。 setex
<过期时间> :设置键值的同时,设置过期时间,单位秒。 getset
:以新换旧,设置了新值同时获得旧值
//添加键值对 127.0.0.1:6379> set k1 v1 OK //获取对应键的值 127.0.0.1:6379> get k1 "v1" //在当前键的值后面加上abc 127.0.0.1:6379> append k1 abc (integer) 5 //获取键的值查看abc是否加入成功 127.0.0.1:6379> get k1 "v1abc" //查看当前键的长度 127.0.0.1:6379> strlen k1 (integer) 5 //在当前键不存在情况下,添加键值对,这里键k1存在,所以添加失败 127.0.0.1:6379> setnx k1 a (integer) 0 //这里键k2不存在,所以添加成功 127.0.0.1:6379> setnx k2 1 (integer) 1 //对指定键的值自增1 127.0.0.1:6379> incr k2 (integer) 2 127.0.0.1:6379> get k2 "2" //对指定键的值自减1 127.0.0.1:6379> decr k2 (integer) 1 127.0.0.1:6379> get k2 "1" //对键k2增加步长为10的数 127.0.0.1:6379> incrby k2 10 (integer) 11 127.0.0.1:6379> get k2 "11" //获取键k1对应下标内的值(包前包后) 127.0.0.1:6379> getrange k1 0 1 "v1" //将na覆盖掉键k1起始下标为0的值 127.0.0.1:6379> setrange k1 0 na (integer) 5 127.0.0.1:6379> get k1 "naabc" //添加键值对k3,并设置过期时间,单位为秒 127.0.0.1:6379> setex k3 2 v3 OK //2秒后查看键发现已过期 127.0.0.1:6379> get k3 (nil) //给键k2设置新值100并返回旧值11 127.0.0.1:6379> getset k2 100 "11" 127.0.0.1:6379> get k2 "100"1.3、list类型常用命令
lpush/rpush
.... :从左边/右边插入一个或多个值。 lpop/rpop
[count]:从左边/右边弹出一个值(值会被删除),count表示设置弹出值的个数(可选)。(当键对应的值被全部弹出,键也会被删除) rpoplpush
:从 列表右边弹出一个值,插到 列表左边。 lrange
:按照索引下标获得元素(从左到右)(0到-1表示获取所有) lindex
:按照索引下标获得元素(从左到右)(值不会被删除) llen
:获得列表长度 linsert
before :从 的前面插入 插入值,(这里的before也可改成after,表示从后面插入) lrem
:从左边删除n个value(从左到右) lset
:将列表key下标为index的值替换成value
//从左添加列表值 127.0.0.1:6379> lpush k1 v1 v2 v3 (integer) 3 //从左往右获取列表k1的值 127.0.0.1:6379> lrange k1 0 -1 1) "v3" 2) "v2" 3) "v1" //从左弹出k1的一个值(值会被删除) 127.0.0.1:6379> lpop k1 "v3" 127.0.0.1:6379> lpush k2 redis java mysql (integer) 3 //从右弹出k1的一个值然后从左插入到k2中 127.0.0.1:6379> rpoplpush k1 k2 "v1" //验证上一个操作弹出成功 127.0.0.1:6379> lrange k1 0 -1 1) "v2" //验证上一个操作插入成功 127.0.0.1:6379> lrange k2 0 -1 1) "v1" 2) "mysql" 3) "java" 4) "redis" //获取k2下标为0的值 127.0.0.1:6379> lindex k2 0 "v1" 127.0.0.1:6379> lrange k2 0 -1 1) "v1" 2) "mysql" 3) "java" 4) "redis" //获取k2的长度 127.0.0.1:6379> llen k2 (integer) 4 //从k1的值v2前面插入abc 127.0.0.1:6379> linsert k1 before v2 abc (integer) 2 //验证上一个操作是否成功 127.0.0.1:6379> lrange k1 0 -1 1) "abc" 2) "v2" //从k2的左边删除1个值为mysql的元素 127.0.0.1:6379> lrem k2 1 mysql (integer) 1 //查看是否操作成功 127.0.0.1:6379> lrange k2 0 -1 1) "v1" 2) "java" 3) "redis" //将列表k2下标为0的值替换成mysql 127.0.0.1:6379> lset k2 0 mysql OK //查看是否操作成功 127.0.0.1:6379> lrange k2 0 -1 1) "mysql" 2) "java" 3) "redis"1.4、set类型常用命令
sadd
..... :将一个或多个 member 元素加入到集合 key 中,已经存在的 member 元素将被忽略 smembers
:取出该集合的所有值。 sismember
:判断集合 是否为含有该 值,有1,没有0 scard
:返回该集合的元素个数 srem
.... :删除集合中的某个元素。 spop
:随机从该集合中弹出一个值。(值会被删除) srandmember
:随机从该集合中取出n个值。不会从集合中删除 。 smove
value:把集合中一个值从一个集合移动到另一个集合 sinter
:返回两个集合的交集元素。 sunion
:返回两个集合的并集元素。 sdiff
:返回两个集合的差集元素(key1中的,不包含key2中的)
//添加set类型的键值对 127.0.0.1:6379> sadd k1 v1 v2 v3 (integer) 3 //取出集合k1的所有值 127.0.0.1:6379> smembers k1 1) "v1" 2) "v2" 3) "v3" //判断集合k1中是否存在值v4 127.0.0.1:6379> sismember k1 v4 (integer) 0 //查看集合k1的长度 127.0.0.1:6379> scard k1 (integer) 3 //删除集合k1中的元素v3 127.0.0.1:6379> srem k1 v3 (integer) 1 //随机从集合k1中弹出一个值。 127.0.0.1:6379> spop k1 "v2" //验证弹出的值会被删除 127.0.0.1:6379> smembers k1 1) "v1" //随机集合k1中取出1个值 127.0.0.1:6379> srandmember k1 1 1) "v1" //验证取出的值不会被删除 127.0.0.1:6379> smembers k1 1) "v1" 127.0.0.1:6379> sadd k2 a b c (integer) 3 //从集合k2中移出元素a并添加到k1中 127.0.0.1:6379> smove k2 k1 a (integer) 1 //验证是否添加成功 127.0.0.1:6379> smembers k1 1) "a" 2) "v1" //验证是否移出成功 127.0.0.1:6379> smembers k2 1) "c" 2) "b" //返回两个集合的交集元素 127.0.0.1:6379> sinter k1 k2 (empty array) //返回两个集合的并集元素 127.0.0.1:6379> sunion k1 k2 1) "c" 2) "a" 3) "v1" 4) "b" //返回两个集合的差集元素(key1中不包含key2中的元素) 127.0.0.1:6379> sdiff k1 k2 1) "a" 2) "v1"1.5、hash常用命令
hset
:给 集合中的 键赋值 hget
:从 集合 取出 value hmset
... :批量设置hash的值 hexists
:查看哈希表 key 中,给定域 field 是否存在。 hkeys
:列出该hash集合的所有field hvals
:列出该hash集合的所有value hincrby
:为哈希表 key 中的域 field 的值加上增量 1 -1 hsetnx
:将哈希表 key 中的域 field 的值设置为 value ,当且仅当域 field 不存在时有效
//给k1中的name属性赋值 127.0.0.1:6379> hset k1 name lisi (integer) 1 //获取k1中的name属性值 127.0.0.1:6379> hget k1 name "lisi" //批量添加k1中的属性和值 127.0.0.1:6379> hmset k1 age 10 sex 0 OK //判断k1中是否存在属性name 127.0.0.1:6379> hexists k1 name (integer) 1 //查看k1中的所有属性 127.0.0.1:6379> hkeys k1 1) "name" 2) "age" 3) "sex" //查看k1中的所有属性的值 127.0.0.1:6379> hvals k1 1) "lisi" 2) "10" 3) "0" //为k1中的属性age的值加上增量2 127.0.0.1:6379> hincrby k1 age 2 (integer) 12 //查看结果 127.0.0.1:6379> hget k1 age "12" //将k1中的属性name的值设置为lusy,因为属性name存在,所以设置失败时有效 127.0.0.1:6379> hsetnx k1 name lusy (integer) 0 //将k1中的属性phone的值设置为123,因为属性phone不存在,所以设置成功 127.0.0.1:6379> hsetnx k1 phone 123 (integer) 11.6、zset常用命令
zadd
…:将一个或多个 member 元素及score 值加入到有序集 key 当中。 zrange
[WITHSCORES] :返回有序集 key 中,下标在 之间的元素,带WITHSCORES,可以让分数一起和值返回到结果集。 zrange key min max byscore [withscores] [limit offset count]:返回有序集 key 中,所有 score 值介于 min 和 max 之间 (包括等于 min 或 max )的成员。(不加byscore,min与max表示下标),有序集成员按 score 值递增(从小到大)次序排列。
zrevrange key max min [withscores] [limit offset count] :同上,改为从大到小列。
zincrby
:为元素的score加上增量 zrem
:删除该集合下,指定值的元素 zcount
:统计该集合,分数区间内的元素个数 zrank
:返回该值在集合中的排名,从0开始。(从小到大)
//将一个或多个元素及其score值加入到有序集k1当中。 127.0.0.1:6379> zadd k1 500 v1 100 v2 300 v3 (integer) 3 //返回有序集k1中,下标在0 -1之间的元素并且带分数带 127.0.0.1:6379> zrange k1 0 -1 withscores 1) "v2" 2) "100" 3) "v3" 4) "300" 5) "v1" 6) "500" //返回k1中分数在200到600之间的元素与分数并从小到大排列 127.0.0.1:6379> zrange k1 200 600 byscore withscores 1) "v3" 2) "300" 3) "v1" 4) "500" //返回k1中下标在0到2之间的元素与分数并从大到小排列 127.0.0.1:6379> zrevrange k1 0 2 withscores 1) "v1" 2) "500" 3) "v3" 4) "300" 5) "v2" 6) "100" //将k1中元素为v1的分数加上100 127.0.0.1:6379> zincrby k1 100 v1 "600" //删除k1中的元素v3 127.0.0.1:6379> zrem k1 v3 (integer) 1 //统计k1中分数从100到500的元素 127.0.0.1:6379> zcount k1 100 500 (integer) 1 //返回元素v2在k1中的排名(从小到大) 127.0.0.1:6379> zrank k1 v2 (integer) 0 //返回元素v1在k1中的排名(从小到大) 127.0.0.1:6379> zrank k1 v1 (integer) 1二、常用API操作 2.1、准备
在redis.conf中注释掉bind 127.0.0.1,然后将protected-mode yes中的yes改成no,再关闭掉Linux的防火墙,否则其他设备将无法连接到Linux中的redis
1.使用vi编辑器打开redis.conf
2.命令模式使用:/bind命令找到bind 127.0.0.1,使用i进入编辑模式注释掉
3.用同样的方法找到protected-mode yes,将yes改成no
4.使用esc退出编辑模式,使用:wq命令保存并退出
5.执行systemctl stop firewalld命令关闭防火墙
6.重启redis
当前状态表示防火墙已关闭
2.2、测试Jedis对象包含了所有Redis的命令操作,所以可以用Jedis对象操作Redis
2.2.1、导入依赖2.2.2、测试API操作redis.clients jedis3.3.0
public class Demo1 {
public static void main(String[] args) {
//创建Jedis对象
//192.168.117.131:Linux的ip地址,redis是在Linux上启动的
//6379:redis端口号
Jedis jedis = new Jedis("192.168.117.131",6379);
//测试是否连接成功
String pong = jedis.ping();
System.out.println("连接成功:" + pong);
System.out.println("==============key==============");
jedis.set("k1","v1");
jedis.set("k2","v2");
jedis.set("k3","v3");
Set keys = jedis.keys("*");
for (String key : keys) {
System.out.println(key);
}
//查看是否存在当前key
System.out.println(jedis.exists("k1"));
//查看key的过期时间
System.out.println(jedis.ttl("k1"));
//获取key的值
System.out.println(jedis.get("k1"));
System.out.println("==============String==============");
//存储多个字符串类型的键值对
jedis.mset("str1","v1","str2","v2","str3","v3");
//获取多个key的值
System.out.println(jedis.mget("str1","str2","str3"));
System.out.println("==============list==============");
jedis.lpush("mylist","l1","l2","l3");
List mylist = jedis.lrange("mylist", 0, -1);
for (String s : mylist) {
System.out.println(s);
}
System.out.println("==============set==============");
jedis.sadd("orders","order01","order02","order03");
Set orders = jedis.smembers("orders");
for (String order : orders) {
System.out.println(order);
}
System.out.println("==============hash==============");
jedis.hset("hash1","username","lisi");
System.out.println(jedis.hget("hash1","username"));
Map map = new HashMap();
map.put("phone","10000000000");
map.put("age","20");
map.put("email","abc@123.com");
//添加map
jedis.hmset("hash2", map);
List result = jedis.hmget("hash2", "phone", "age", "email");
for (String s : result) {
System.out.println(s);
}
System.out.println("==============zset==============");
jedis.zadd("zset01",100d,"z3");
jedis.zadd("zset01",90d,"l4");
jedis.zadd("zset01",80d,"w5");
jedis.zadd("zset01",70d,"z6");
Set zset01 = jedis.zrange("zset01", 0, -1);
for (String s : zset01) {
System.out.println(s);
}
}
}
2.2.3、结果
连接成功:PONG ==============key============== k3 k1 k2 true -1 v1 ==============String============== [v1, v2, v3] ==============list============== l3 l2 l1 ==============set============== order01 order03 order02 ==============hash============== lisi 10000000000 20 abc@123.com ==============zset============== z6 w5 l4 z3



