redis使用介绍
- 2025-07-23 22:52:00
- admin
- 原创 313
一、redis使用介绍
1、版本下载:https://github.com/redis/redis/releases
2、版本下载:https://github.com/redis-windows/redis-windows/releases
3、使用帮助:https://redis.io/docs/latest/develop/get-started
4、命令帮助:https://redis.io/docs/latest/commands
5、jedis帮助文档:https://redis.github.io/jedis
redis使用详解:
1、使用单线程处理命令,因为是操作内存,所以效率非常高;
2、采用键值对存储数据,健是字符串,值支持多种数据类型;
3、值支持的数据类型:字符串、哈希、列表、集合、有序集合;
4、字符串支持二进制,包括健和值,允许使用冒号、横杠、点、花括号;
5、列表可以用于实现任务队列,实现分布式任务处理;
6、有序集合需要设置分数,非常适合实现排行榜功能;
7、bitmap非常节约内存,适合用户签到和权限管理等场景;
redis运行:
1、编译:make
2、运行:./redis-server
3、连接:./redis-cli
redis常用命令:
1、info,返回服务端信息;
2、info keyspace,返回所有数据库的健信息;
3、client info,返回客户端信息,包含当前操作的数据库;
4、select index,切换当前操作的数据库;
5、dbsize, 返回当前数据库的健数量;
6、flushdb,同步清除当前数据库;
7、flushall,同步清除所有数据库;
redis扫描key:
1、keys *,返回当前数据库的所有key;
2、scan cursor,迭代当前数据库的所有key,游标0开始迭代,到游标0表示结束;
3、match和type选项应用在查询数据库之后,导致迭代经常返回0个元素;
4、扫描可能返回重复数据,可能不返回迭代过程中删除的数据;
5、数据量较小时使用keys,数据量较大时使用scan;
redis配置管理:
1、config get databases,返回数据库数量,默认16个,默认使用0;
2、config get proto-max-bulk-len,字符串最大长度,默认512M;
3、config get *len,返回长度相关配置;
二、常用数据类型
字符串操作:
1、set mykey "myvalue",设置键值对;
2、set mykey "myvalue" ex 60,设置键值对,60秒过期;
3、set mykey "myvalue" keepttl,设置键值对,不修改过期时间;
4、set mykey "myvalue" nx ex 60,键值对不存在时,设置键值对;
5、set mykey "myvalue" get,设置键值对,返回上一次值;
6、get mykey,查询设置值;
7、ttl mykey,查询过期时间;
8、exists mykey,是否存在键值对;
9、del mykey,删除健值对;
整数操作:
1、redis底层不支持整数,整数操作实际使用字符串;
2、整数操作最大范围是64位有符号整数,等价于long;
3、incr mykey,整数自增,健不存在时,初始值为0;
4、decr mykey,整数自减,健不存在时,初始值为0;
5、expire mykey seconds,设置过期时间,不推荐使用;
哈希操作:
1、hset mymap name feinen,设置元素;
2、hget mymap name,查询元素;
3、hdel mymap name,删除元素;
4、hgetall myapp,查询所有元素;
5、hkeys mymap,查询所有key;
6、hvals mymap,查询所有value;
7、hexpire mymap 60 fields 2 name age,设置过期时间;
8、httl mymap fields 2 name age,查询过期时间;
哈希操作示例:
hset mymap name feinen
hset mymap age 21
hset mymap sex boy
hget mymap name
hget mymap age
hget mymap sex
hdel mymap sex
hkeys mymap
hvals mymap
列表操作:
1、lpush mylist people,往列表头部增加元素;
2、rpush mylist people,往列表尾部增加元素;
3、blpop mylist timeout,阻塞从列表头部删除元素,0表示不超时;
4、brpop mylist timeout,阻塞从列表尾部删除元素,0表示不超时;
5、lpop mylist,从列表头部删除元素;
6、rpop mylist,从列表尾部删除元素;
7、lrange mylist 0 -1,查询所有元素;
8、llen mylist,查询列表长度;
列表操作示例:
del mylist
lpush mylist people1
lpush mylist people2
lpush mylist people3
rpush mylist people1
rpush mylist people2
rpush mylist people3
lrange mylist 0 -1
lpop mylist
llen mylist
三、集合操作
集合操作:
1、sadd myset elem,增加元素;
2、srem myset elem,删除元素;
3、smembers myset,查询所有元素;
4、scard myset,查询集合元素数量;
5、sinter myset myset2,集合交集;
6、sunion myset myset2,集合并集;
7、sdiff myset myset2,集合差集;
集合操作示例:
del myset
sadd myset name
sadd myset age
sadd myset sex
srem myset sex
smembers myset
scard myset
有序集合操作:
1、先根据分数排序,分数一样时,再根据元素排序;
2、zadd orderSet score elem,增加元素;
3、zrem orderSet elem,删除元素;
4、zscore orderSet elem,查询元素分数;
5、zrange orderSet 0 -1 withscores,查询所有元素;
6、zcard orderSet,查询集合元素数量;
有序集合操作示例:
del orderSet
zadd orderSet 10 name
zadd orderSet 10 age
zadd orderSet 10 sex
zrem orderSet sex
zscore orderSet sex
zrange orderSet 0 -1 withscores
zcard orderSet
四、比特位操作
bitmap操作:
1、底层实际使用字符串,索引范围从0到2^32-1,最大512M;
2、按照最大设置索引分配内存,索引变大会导致重新分配内存;
3、setbit mybitmap 1000 1,设置比特位;
4、getbit mybitmap 1000,查询比特位;
5、bitcount mybitmap 0 1000 bit,统计置一比特位数量;
6、bitpos mybitmap 1 0 1000 bit,查找第一个置一比特位的位置;
7、bitop and destkey key1 key2,比特位运算;
8、bitop not destkey key,比特位运算;
bloomfilter原理:
1、下载布隆过滤器:https://redis.io/downloads
2、支持布隆过滤器:./redis-server --loadmodule ./redisbloom.so
3、概率型数据结构,非常节约内存,用于高效插入和查询某个元素是否存在;
4、0.01错误率,要求7个哈希函数,每个元素消耗9.585比特,普通场景使用;
5、0.001错误率,要求10个哈希函数,每个元素消耗14.378比特,高精度场景使用;
6、默认包含1个过滤器,容量用完之后,会新建一个过滤器,默认按上一个过滤器2倍扩容;
bloomfilter操作:
1、bf.reserve mybf 0.01 1000,初始化布隆过滤器;
2、bf.add mybf elem,往过滤器增加一个元素;
3、bf.exists mybf elem,查询元素是否存在;
4、bf.card mybf,查询元素数量,比特置位才会计数;
5、bf.info mybf,查询布隆过滤器信息;