赞
踩
命令 | 作用 |
---|---|
DEL key [key …] | 删除数据库中已经存在的一个或多个 key,如果不存在则自动忽略 |
EXISTS key [key …] | 检查指定的一个 key 或者多个 key 是否存在 |
EXPIRE key seconds | 设置 key 的过期时间,以秒为单位 |
EXPIREAT key timestamp | 以 UNIX 时间戳格式来设置 key 的过期时间 |
KEYS pattern | 查找符合的key,生产环境禁用可食用scan游标代替 |
MOVE key db | 移动到其他数据库,Redis 共有 16 个数据库 |
PERSIST key | 移除key的过期时间 |
PEXPIRE key milliseconds | 设置 key 的过期时间,以毫秒为单位 |
RANDOMKEY | 前数据库中随机返回一个 key |
RENAME key newkey | 修改 key 的名称 |
TTL key | 查看 Key 剩余的过期时间,以秒为单位 |
PTTL key | 查看key的剩余过期时间,返回毫秒 |
TYPE key | 返回 key 所储存的值的类型 |
FLUSHDB | 清空当前库所有key |
FLUSHDBALL | 清空所有库中的key |
命令 | 作用 |
---|---|
set key value [expiration EX seconds] | 设置key的value值 && 过期时间 原子性操作 |
get key | 获取指定key的value值 |
append key value | 追加字符串 key不存在则创建 |
strlen key | 获取value长度 |
incr key | 自增+1 |
decr key | 自减-1 |
incrby key number | 增加指定数值 |
decrby key number | 减少指定数值 |
getrange key start end | 截取字符串 -1 表示最后一个字符 |
setrange key offset value | 替换字符串,覆盖的位置从偏移量 offset 开始 |
setnx key value | key不存在则创建(分布式锁场景) |
mset key1 value1 key2 value2 | 创建多个key :value |
mget key1 key2 | 获取多个key |
msetnx key1 val1 key2 val2 | key不存在则创建,存在就忽略 |
getset key value | 获取之后重新赋值 key不存在返回nil |
命令 | 作用 |
---|---|
rpush key val1 val2 val3 | 从尾部添加元素 |
lpush key val1 val2 val3 | 从头部添加元素 |
lpop key count | 从头部移除指定个数元素 |
rpop key count | 尾部移除指定个数元素 |
lindex key index | 根据下标获取元素 |
llen key | 获取列表key个数 |
lrem key count value | 根据 count 的值,移除列表中与参数 value 相等的元素 |
ltrim key start end | 通过下标保留指定数据 |
rpoplpush list otherlist | 移除列表最后一个元素 放到新的list中 |
lset key index value | 按指定下标 替换value key必须存在 |
lrange key start end | 获取 0 -1 取全部 |
命令 | 作用 |
---|---|
hset key field value | 设置哈希表中指定key下field的值为value |
hmset | 同上,设置多个 |
hget key field | 获取制定key中field字段的value值 |
hmget key field field2 | 同上,获取多个 |
hgetall key | 获取哈希表key中所有字段和值 |
hdel key field | 删除哈希表key中字段field |
hlen key | 哈希表key中字段数量 |
hexists key field | 查看哈希表key中field是否存在 |
hkeys key | 获取哈希表key 所有的field |
hvals key | 获取哈希表中所有field的value值 |
hincryby key field number | 增加指定数值 可以设置负数减少 |
hsetnx key field value | 不存在创建 存在不能创建 |
命令 | 作用 |
---|---|
sadd key val1 val2 | 集合中添加元素 |
smembers key | 查看集合中所有元素 |
sismember key val | 查看集合中是否存在某个value |
scard key | 查看集合元素数量 |
srem key val | 删除集合某个元素 |
srandmember key count | 随机从集合中取出指定个数元素 |
spop key count | 随机弹出指定个数的元素 |
smove key key2 value | 把value从key中移动到key2中 |
sdiff key1 key2 key3 | 集合差集 |
sinter key1 key2 key3 | 集合交集 |
sunion key key1 | 集合并集 |
命令 | 作用 |
---|---|
zadd key score member | 将一个或多个member元素及其score值加入到有序集key当中,若添加的member已存在则更新当前分数 |
zrange key min max | 返回有序集中,指定区间内的成员 |
zrangebyscore key min max | 根据scores从小到大返回区间内成员 |
zrangebyscore key min max whithscores | 根据scores从小到大返回区间内成员包含scores值 |
zrangebyscore key min 2500 | 根据scores从小到大返回小于2500区间内成员 |
zrevrange key start end withscores(选填) | 按score值递减(从高到低)来排列获取 |
zrevrangebyscore key max min [withscores] [limit offset count] | 指定分数区间的成员列表,从小到大排列 |
zcard key | 获取有序集合成员数量 |
zcount key min max | 获取指定区间内的成员 |
zrandmember key [count [withscores]] | 随机获取指定个数的成员 |
zmscore key member [member …] | 返回集合指定成员的sources值 |
zscan myzsetA 0 match * count 2 | 游标迭代遍历集合内部元素 |
zrevrank key member | 按score值从高到低排列,获取成员排名 |
zrank key member | 按score值又低到高排列,获取成员排名推(荐分数相同时使用) |
zrem key member | 删除有序集合中指定成员 |
zremrangebyrank key start stop | 删除指定排名区间内 |
zremrangebylex key min max | 删除按名称字典排序由低到高区间内成员 |
zremrangebyscore key min max | 删除分数介于min到max的成员 |
zpopmax key [count] | 删除分数最高的指定个数成员 |
zpopmin key [count] | 删除分数最低的指定个数的成员 |
命令 | 作用 |
---|---|
geoadd key longitude latitude member | 将指定的地理空间(经度、纬度、名称)添加到指定的键中 |
geopos key member member1 | 获取指定成员的经纬度 |
geodist key member1 member2 [M/KM/FT/MI] | 获取两个成员直线距离 |
georadius key 经度 纬度 1000 km [withdist(距离)] [withcoord(经纬度)] count个数 desc | 通过经纬度查看指定中心点半径距离的经纬度的members |
georadiusbymember key member1 1000[M/KM/FT/MI] | 查看成员指定范围内的成员 |
**基数的概念:
{1,2,3,1,2,3,4,5,6} 数据集中不重复的元素为1,2,3,4,5,6 那么该数据集中的基数为6
优点:
每个HyperLogLog键只需要花费12KB内存,就可以计算接近2^64 个不同元素的基数**
命令 | 作用 |
---|---|
PFADD key member […member] | =添加== |
PFCOUNT key […key] | 返回给定HyperLogLog的基数估算值,可一次统计多个key,返回值是一个带有 0.81% 标准错误的近似值 |
PFMERGE newKey key1 key2 | 合并多个HyperLogLog 到新的HyperLogLog中 |
demo 个人理解
//重复返回0 不重复返回1。可用于UV统计场景
127.0.0.1:6379> pfadd name java go python
(integer) 1
127.0.0.1:6379> pfcount name
(integer) 3
127.0.0.1:6379> pfadd name java
(integer) 0
127.0.0.1:6379> pfadd name php
(integer) 1
127.0.0.1:6379>
8bit(位) = 1B [Byte=B] 字节(最小单位)
1024 B = 1 KB [KiloByte] 千字节
1024 KB = 1 MB [MegaByte] 兆字节
1024 MB = 1 GB [GigaByte] 吉字节
1024 GB = 1 TB [TeraByte] 太字节
1024 TB = 1 PB [PetaByte] 拍字节
1024 PB = 1 EB [ExaByte] 艾字节
1024 EB = 1 ZB [ZetaByte] 皆字节
1024 ZB = 1 YB [YottaByte] 佑字节
1024 YB = 1 BB [Brontobyte] 珀字节
1024 BB = 1 NB [NonaByte] 诺字节
1024 NB = 1 DB [DoggaByte] 刀字节
bit为计算机最小单位,8bit = 1b字节, 一个bit只能设置0或者1,所以只能代表两个状态(占用空间特别小)
命令 | 作用 |
---|---|
setbit key offset value | 设置或清除存在当前key里指定offset(偏移)位置上的位(可设置0或1,否和是 |
bitcount key [start end] | 计算字符串中设置位数为1的个数,指定范围则使用start、end |
getbit key offset | 获取指定key上制定偏移量的value值 |
demo:
setbit userWork 0 1
setbit userWork 1 0
setbit userWork 2 1
setbit userWork 3 1
setbit userWork 4 1
setbit userWork 5 0
setbit userWork 6 0
bitcount userWork. //查看user一周工作了几天
(integer) 4
非原子性。一组有序队列
命令 | 作用 |
---|---|
watch key | 监控事务WATCH 机制使的事务 EXEC 变的有条件,事务只有在被 WATCH 的 key 没有修改的前提下才能执行 |
multi | 开启事务 |
discard | 停止事务 |
exec | 提交事务 |
倒入坐标
//Jedis
<dependency>
<groupId>redis.clients</groupId>
<artifactId>jedis</artifactId>
<version>3.5.2</version>
</dependency>
//转json
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>fastjson</artifactId>
<version>2.0.19</version>
</dependency>
测试类
@Test
void redisTxTest() {
//建立连接
Jedis jedis = new Jedis("127.0.0.1",6379);
//auth密码验证
jedis.auth("123456");
//选择操作的库
jedis.select(0);
JSONObject jsonObject = new com.alibaba.fastjson.JSONObject();
jsonObject.put("name","jack陈");
jsonObject.put("age","18");
//对象转字符串
String res = jsonObject.toString();
//开启事务
Transaction multi = jedis.multi();
try {
multi.set("user",res);
multi.set("test","testValue");
multi.exec();
}catch (Exception e) {
//异常停止事务
multi.discard();
e.printStackTrace();
}finally {
//关闭连接
jedis.close();
}
}
springboot2 以后Redis底层jedis替换成lettuce
jedis 直连 不安全 要使用poll连接池
lettuce 不存在线程不安全 采用netty 多个线程共享实例
(1)倒入坐标
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-redis</artifactId>
</dependency>
(2)配置redisTemplate
@Configuration
public class RedisConfig {
//自定义RedisTemplate 固定模版 项目中可以复制使用
@Bean(name = "redisTemplateSelf")
public RedisTemplate<String,Object> redisTemplate(RedisConnectionFactory redisConnectionFactory) {
RedisTemplate<String,Object> redisTemplate = new RedisTemplate<String,Object>();
redisTemplate.setConnectionFactory(redisConnectionFactory);
//序列化配置
Jackson2JsonRedisSerializer jackson2JsonRedisSerializer = new Jackson2JsonRedisSerializer(Object.class);
ObjectMapper om = new ObjectMapper();
om.setVisibility(PropertyAccessor.ALL, JsonAutoDetect.Visibility.ANY);
om.enableDefaultTyping(ObjectMapper.DefaultTyping.NON_FINAL);
jackson2JsonRedisSerializer.setObjectMapper(om);
//String序列化配置
StringRedisSerializer stringRedisSerializer = new StringRedisSerializer();
//key采用string序列化方式
redisTemplate.setKeySerializer(stringRedisSerializer);
//hash的keyString序列化
redisTemplate.setHashKeySerializer(stringRedisSerializer);
//value 序列化采用jackson2JsonRedisSerializer
redisTemplate.setValueSerializer(jackson2JsonRedisSerializer);
//hash value 序列化采用jackson2JsonRedisSerializer
redisTemplate.setHashValueSerializer(jackson2JsonRedisSerializer);
redisTemplate.afterPropertiesSet();
return redisTemplate;
}
}
(3) 配置工具类封装Reids
@Component
public final class RedisUtil {
@Autowired
private RedisTemplate<String,Object> redisTemplate;
public void test() {
redisTemplate.opsForValue().set("name","cdd");
System.out.println("redis util...");
}
}
(4) 测试类
//Redis工具类测试
@Test
void redisUtilTest() {
redisUtil.testSet();
}
//结果
redis util...
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。