下载redis
下载地址:Releases · microsoftarchive/redis · GitHub
1、下载后解压,在文件根目录下创建两个文件夹dbcache、logs
修改配置文件redis.windows.conf
(1)配置redis地址:
bind 127.0.0.1
(2)配置redis端口(默认6379):
port 6379
(3)配置redis密码(默认为空):
requirepass 123456
(4)配置redis是否为后台运行(NOT SUPPORTED ON WINDOWS):
daemonize no
(5)设置进程保存路径(NOT SUPPORTED ON WINDOWS):
/var/run/redis_6379.pid
(6)支持数据库个数:
databases 16
(7)设置数据文件保存目录:
dir ./dbcache
(8)设置日志文件保存:
logfile "./logs/logfile.log"
3、启动redis服务,双击redis-server.exe 或 cmd到redis安装目录执行命令(需要指定配置文件):
redis-server redis.windows.conf
4、将redis注册为系统服务,设置redis开机自启
打开命令行,进入redis目录,执行以下命令,然后查看“服务”(services.msc)。另外,配置一下环境变量,将redis路径添加到path中。这里就是用了redis.windows-service.conf作为配置文件, --loglevel notice是设置log记录的,基本是notice
redis-server.exe --service-install redis.windows-service.conf --loglevel notice
5、连接redis客户端,执行以下命令行:
redis-cli -h 127.0.0.1 -p 6379
如果设置密码,则需要输入密码(auth "你的密码")验证:
auth "123456"
进行简单redis操作测试:
此外redis有提供客户端可视化工具:
- Another Redis Desktop Manager(本人用过) GitHub - qishibo/AnotherRedisDesktopManager: 🚀🚀🚀A faster, better and more stable redis desktop manager [GUI client], compatible with Linux, Windows, Mac. What's more, it won't crash when loading massive keys.
- Redis Insight (Web版) RedisInsight | The Best Redis GUI
redis常用的服务命令
(1)安装服务
redis-server --service-install
(2)卸载服务
redis-server --service-uninstall
(3)启动服务
redis-server --service-start
(4)停止服务
redis-server --service-stop
(5)其他命令
redis-server --service-name YourServiceName #设置服务的名字
redis-server --port YourPortNumber #设置服务的端口号
第一条命令为:以redis.windows-servie.conf作为配置文件,名字为 redisTest, 端口号为 6388 来安装一个Redis服务;
第二条命令为:(红色框内)是卸载名为 redisTest的服务。
redis常用操作命令
对key的操作
#查看当前库所有的key
keys *
#判断某个key是否存在
exists key
#查看key的类型
type key
#删除指定的key
del key
#unlink key 根据key非阻塞删除,先将key从元数据中删除,后续异步删除key
#设置key的过期时间(10秒)
expire key 10
#查看key剩余多少过期时间, -1表示永不过期,-2表示已过期,其他表示剩余多少秒
ttl key
#查看当前库中key的数量
dbsize
String类型操作
#添加键值对
set key value
#通过key获得值
get key
#对指定key的值在末尾追加
append key value
#获得指定key的值的长度
strlen key
#添加键值对,只有key不存在时才添加,并且返回1,当key存在时,不添加,返回0
setnx key value
#将key中存储的数字值自增1
incr key
#将key中存储的数字值减一1
decr key
#注意:自增,自减操作在redis中都是原子性。
#将key中存储的数据值增加/减少指定的值10
incrby/decrby key 10
#同时添加多个键值对
mset key1 value1 key2 value2
#同时获得多个key的值
mget key1 key2
#同时设置多个键值对,只有当所有的键值对都不存在时,才设置(如果有其中一个key存在,那么所有的键值对都不添加)
msetnx key1 value1 key2 value2
#获取指定key范围的值(索引位置为0-3的值)
getrange key 0 3
#设置指定key的值从指定位置开始覆盖(索引为3的位置)
setrange key 3 value #(会将key原来的值,从索引为3的位置开始覆盖value,value有几位就覆盖几位,剩余的保留)
#以旧换新,将旧的值替换出来
getset key value
String 类型的数据结构为简单动态字符串,是可以修改的字符串,内部结构类似与ArrayList,先预分配一块冗余的空间,必变频繁的扩容。
String类型的扩容,当预存空间大小小于1M时,每次扩容为预存空间的2倍。当预存空间大于1M时,每次扩容只增加1M。
list(一键多值)类型操作
#从左边依次插入多个值
lpush key value1 value2 value3
#从右边依次插入多个值
rpush key value1 value2 value3
#从列表左边/或右边吐出一个值(吐出之后这个值就不在列表里面了)
lpop/rpop key
#从列表1中右边/吐出一个值插入到列表2的左边(吐出之后,这个就不在列表里面了)
rpoplpush key1 key2
#从左边按照索引下标取元素
lrange key 0 1 #(注意:0 -1表示取所有的元素)
#按照索引下标获取指定位置的元素(从左往右)
lindex key 1
#获取列表长度
llen key
#在value前面插入新的值
linsert key before value newvalue
#从左边删除3个值为value的元素
lrem key 3 value
#将列表key下标为4的元素替换成value
lset key 4 value
list的数据结构为快速链表quickList。
当列表元素较少时,会使用一块连续的内存存储,这个结构是ziplist,叫做压缩列表。它所有元素紧挨在一起存储,分配的是一块连续的内存。
当列表元素数量比较多的时候才会改成quicklist。
因为普通链表需要的附加指针空间大,会比较浪费内存。如果这个列表里只存int类型的数据,那么每个数据还要两个额外的指针,这个指针相对数据来说就浪费内存。
Redis将链表和ziplist组合成了quicklist,也就是将多个ziplist使用双向链表连起来这样既满足了快速插入和删除的性能,又不会造成太大的内存空间冗余。
set集合
#向指定key添加value
sadd key value
#检查集合key中是否有value值(有返回1,没有返回0)
sismember key value
#获取集合key中的成员数
scard key
#获取集合key中所有成员
smembers key
#将集合key1中value元素移动到集合key2中
smove key1 key2 value
#随机吐出集合key中的一个元素(吐出之后会在集合中删除)
spop key
#随机获得集合key中count个值
srandmember key count
#移除集合key中一个或多个元素
srem key value1 value2
#返回给定集合的并集
sunion key1 key2
#返回第一个集合key1 与其他集合之间的差集
sdiff key1 key2
#返回给定集合的交集
sinter key1 key2
hash
#向redis里面添加一个hash
hset key field value
#一次向hash表里添加多个filed
hmset key field1 value1 field2 value2
#删除一个或多个field
hdel key field1 field2
#查看hash表key中指定的field是否存在
hexists key field
#获取hash表key中field的值
hget key field
#获取hash表key中所有的值
hvals key
#获取hash表key中所有的field和值
hgetall key
#为hash表key中整数值field 加上num
hincrby key field num
#为hash表key中浮点值field 加上num
hincrbyfloat key field num
#获取hash表key中所有的field
hkeys key
#获取hash表key中field的数量
hlen key
#获取hash表key中所有给定field的值
hmget key field1 field2
#只有在field值段不存在时,设置field的值
hsetnx key field value