Redis
我的Redis装在本地虚拟机中,因此我需要先打开虚拟机,然后执行如下命令启动Redis。
cd /home/redis
./bin/redis-server ./conf/redis.conf
随后使用另一个终端,执行如下命令连接redis。
redis-6.2.0/src/redis-cli --raw
当左边变为127.0.0.1:6379
时就代表安装成功了。
注:此笔记中,所有关键字都以大写字母表示,标识符及常量用小写字母表示。
字符串类型
SET key value
:赋值。GET key
:取值。
INCR key
:递增数字。
INCRBY key increment
:增加指定的整数。
DECR key
:减少1。DECRBY key decrement
:减少指定的整数。
INCRBYFLOAT key increment
:增加指定的浮点数。APPEND key value
:向末尾追加值。
STRLEN key
:获取字符串长度。
MGET key [key ...]
:查看多组键的值。MSET key value [key value ...]
:同时设置多个键的值。
EXISTS key [key ...]
:查看键是否存在。
DEL key [key ...]
:删除键。
哈希类型
HSET key field value
:赋值。HGET key field
:取值。HMSET key field value [field value ...]
:给多个字段赋值。HMGET key field [field ...]
:取多个字段的值。HGETALL key
:获取所有字段和它们的值。
HEXISTS key field
:判断字段是否存在。HSETNX key field value
:若字段不存在则赋值。
HINCRBY key value increment
:增加数字。HDEL key field [field ...]
:删除字段。
HKEYS key
:只获取字段名。HVALS key
:只获取字段值。
HLEN key
:获取字段数量。
列表类型
LPUSH key value [value ...]
:向列表左边添加元素。RPUSH key value [value ...]
:向列表右边添加元素。
LPOP key
:从列表左边获取元素并删除。RPOP key
:从列表右边获取元素并删除。
LLEN key
:获取列表中元素的个数。
LRANGE key start stop
:获取列表片段。start和stop皆为索引,和Python的列表切片类似。
LREM key count value
:删除列表中指定的值。若count大于0,则从左边开始删除count个值为value的元素。若count小于0则从右边开始删除。若count等于0则删除所有值为value的元素。
LINDEX key index
:获取指定索引的元素值。LSET key index value
:设置指定索引的元素值。
LTRIM key start end
:只保留列表指定片段。LINSERT key BEFORE|AFTER pivot value
:从左到右查找值为pivot的元素,并根据第三个参数在元素前后插入值为value的元素。
RPOPLPUSH source destination
:将元素从一个列表转到另一个列表。
集合类型
SADD key member [member ...]
:添加元素。SREM key member [member ...]
:删除元素。
SMEMBERS key
:获取集合中所有元素。SISMEMBER key
:判断元素是否在集合中。
SDIFF key [key ...]
:集合间差集运算。SINTER key [key ...]
:集合间交集运算。SUNION key [key ...]
:集合间并集运算。
SCARD key
:获取集合中元素个数。SDIFFSTORE destination key [key ...]
:进行差集运算并存储结果。SINTERSTORE destination key [key ...]
:进行交集运算并存储结果。SUNIONSTORE destination key [key ...]
:进行并集运算并存储结果。SRANDMEMBER key [count]
:随机获取集合中的元素。SPOP key
:从集合中弹出一个元素。
有序集合
ZADD key score member [score member ...]
:添加元素。
ZSCORE key member
:获取元素的分数。
ZRANGE key start stop [WITHSCORES]
:按照分数从小到大返回范围内元素。ZREVRANGE key start stop [WITHSCORES]
:按照分数从大到小返回范围内元素。
ZRANGEBYSCORE key min max [WITHSCORES] [LIMIT offset count]
: 按照元素从小到大的顺序返回分数在min和max之间的元素。
ZINCRBY key increment member
:增加一个元素的分数。ZCARD
:获得集合中元素的数量。ZCOUNT key min max
:获得指定分数范围内的元素个数。
ZREM key member [member ...]
:删除一个或多个元素。ZREMRANGEBYRANK key start stop
:按照排名范围删除元素。ZREMRANGEBYSCORE
:删除分数范围命令内的元素。ZRANK key member
:获得元素的排名(从小到大)。ZREVRANK key member
:获得元素的排名(从大到小)。ZINTERSCORE destination numkeys key [key ...] [WEIGHTS weight [weight ...]] [AGREEGATE SUM|MIN|MAX]
:计算多个有序集合的交集并将结果存放在destination中。AGREEGATE参数用来指定destination中键的分数。其中SUM为每个参与计算的集合中该元素分数和,MIN为最小值,MAX为最大值。
流类型
XADD key [MAXLEN [=|~] threshold] *|ID field value [field value]
:增加条目。
XRANGE key start end [COUNT count]
:根据ID范围来查询条目。
XDEL key ID [ID ...]
:删除指定元素。XTRIM key MAXLEN [=|~] threshold
:裁剪流。XLEN key
:查询流的长度。XREVRANGE key end start [COUNT count]
:根据反向ID按范围查询条目。
事务
MULTI
:开启事务。EXEC
:提交事务。- Redis没有事务回滚功能。
WATCH key
:监控一个或多个键。若它被修改,则不执行之后的事务。EXPIRE key seconds
:设置过期时间,单位是秒钟。TTL key
:查看键的过期时间还有多久。PRESIST key
:清除键的过期时间,将键设为永久的。PEXPIRE miliseconds
:设置键的过期时间,单位是毫秒。PTTL key
:查看键的过期时间,单位是毫秒。
排序
SORT key
:排序列表,将其按照字面值排序;排序有序列表,使其里面的元素按照自身的值排序。SORT key ALPHA
:按照字典顺序排序。SORT key BY field [DESC]
:按照哈希的某个字段排序。
发布/订阅模式
PUBLISH channel message
:向某个频道发送消息。SUBSCRIBE channel
:订阅某个频道。
使用客户端连接Redis
Python连接Redis
安装
在venv环境中使用pip install redis
安装redis-py库。
使用
import redis
redis = redis.StrictRedis('192.168.204.129', decode_responses=True)
print('设置值:', redis.set('key1', 'value'))
print('取值', redis.get('key1'))
print('设置多组键', redis.mset({'key2': 'value2', 'key3': 'value3'}))
print('获取多组值', redis.mget(['key1', 'key2', 'key3']))
print('删除值', redis.delete('key1'))
print('取键', redis.keys('*'))
Java连接Redis
安装
下载Jedis.jar包。
在IDEA中添加为库。
示例
import redis.clients.jedis.Jedis;
import java.util.List;
public class Main {
public static void main(String[] args) {
// 创建Jedis对象,并指定Redis服务器的主机名和端口号
Jedis jedis = new Jedis("192.168.204.129", 6379);
// 连接到Redis服务器
jedis.connect();
// 执行一些操作
jedis.set("mykey", "Hello Redis");
String value = jedis.get("mykey");
System.out.println(value);
jedis.mset("key1", "value1", "key2", "value");
List<String> values = jedis.mget("key1", "key2");
for (String tmp : values) {
System.out.println(tmp);
}
// 关闭连接
jedis.close();
}
}