redis的基础应用

骆神给我们讲的redis,整堂课内心除了卧槽,好牛批,其实啥也没记住😂😂😂😂😂
以下是对这周redis的 学习做的一点小小的总结:

Redis定义

redis是一个key-value存储系统。和Memcached类似,它支持存储的value类型相对更多,包括string(字符串)、list(链表)、set(集合)、zset(sorted set --有序集合)和hash(哈希类型)。这些数据类型都支持push/pop、add/remove及取交集并集和差集及更丰富的操作,而且这些操作都是原子性的。在此基础上,redis支持各种不同方式的排序。与memcached一样,为了保证效率,数据都是缓存在内存中。区别的是redis会周期性的把更新的数据写入磁盘或者把修改操作写入追加的记录文件,并且在此基础上实现了master-slave(主从)同步。

Redis 是一个高性能的key-value数据库。 redis的出现,很大程度补偿了memcached这类key/value存储的不足,在部 分场合可以对关系数据库起到很好的补充作用。它提供了Java,C/C++,C#,PHP,JavaScript,Perl,Object-C,Python,Ruby,Erlang等客户端,使用很方便。 [1]

Redis支持主从同步。数据可以从主服务器向任意数量的从服务器上同步,从服务器可以是关联其他从服务器的主服务器。这使得Redis可执行单层树复制。存盘可以有意无意的对数据进行写操作。由于完全实现了发布/订阅机制,使得从数据库在任何地方同步树时,可订阅一个频道并接收主服务器完整的消息发布记录。同步对读取操作的可扩展性和数据冗余很有帮助。

  • 由于是在Linux上操作的redis,所以这里我们先来说一下Linux环境下安装软件的过程。

1. 通过包管理工具安装软件。

定义:

(1). yum( Yellow dog Updater, Modified)是一个在Fedora和RedHat以及SUSE中的Shell前端软件包管理器。基於RPM包管理,能够从指定的服务器自动下载RPM包并且安装,可以自动处理依赖性关系,并且一次安装所有依赖的软体包,无须繁琐地一次次下载、安装。yum提供了查找、安装、删除某一个、一组甚至全部软件包的命令,而且命令简洁而又好记。

yum的一些常用命令

1.列出所有可更新的软件清单命令:yum check-update
2.更新所有软件命令:yum update
3.仅安装指定的软件命令:yum install <package_name>
4.仅更新指定的软件命令:yum update <package_name>
5.列出所有可安裝的软件清单命令:yum list
6.删除软件包命令:yum remove <package_name>
7.查找软件包 命令:yum search <keyword>
8.清除缓存命令:
yum clean packages: 清除缓存目录下的软件包
yum clean headers: 清除缓存目录下的 headers
yum clean oldheaders: 清除缓存目录下旧的 headers
yum clean, yum clean all (= yum clean packages; yum clean oldheaders) :清除缓存目录下的软件包及旧的headers

yum实例

  • yum CentOS
    ~ yum search nginx
    ~ yum install nginx
    ~ yum erase nginx / yum remove nginx
    ~ yum info nginx
    ~ yum list installed | grep nginx
  • rpm Redhat
    ~ rpm -ivh 下载的rpm包文件名
    ~ rpm -e
    ~ rpm -qa
  • apt Ubuntu

2.源代码构建安装

安装Redis官方最新版:

~ wget http://download.redis.io/releases/redis-5.0.7.tar.gz
~ gunzip redis-5.0.7.tar.gz
~ tar -xvf redis-5.0.7.tar
~ cd redis-5.0.7
~ make && make install

安装Git官方最新版

~ wget https://mirrors.edge.kernel.org/pub/software/scm/git/git-2.24.1.tar.xz
~ xz -d git-2.24.1.tar.xz
~ tar -xf git-2.24.1.tar
~ cd git-2.24.1
~ yum install -y curl libcurl-devel
~ ./configure --prefix=/usr/local
~ make && make install

以安装python环境为例:

[root ~]# yum install gcc (安装编译环境)
[root ~]# wget https://www.python.org/ftp/python/3.7.5/Python-3.7.5.tgz (下载安装包)
[root ~]# gunzip Python-3.7.5.tgz (解压)
[root ~]# tar -xvf Python-3.7.5.tar (解归档)
[root ~]# cd Python-3.7.5 (进入安装包)
[root ~]# ./configure —prefix=/usr/local/python37 —enable-optimizations (设置安装路径)
[root ~]# yum -y install zlib-devel bzip2-devel openssl-devel ncurses-devel sqlite-devel readline-devel tk-devel gdbm-devel db4-devel libpcap-devel xz-devel (安装相关依赖库)
[root ~]# make && make install (编译执行安装文件)

[root ~]# ln -s /usr/local/python37/bin/python3.7 /usr/bin/python3 (给python指令文件创建快捷方式python3)
[root ~]# python3 —version
Python 3.7.5
[root ~]# python3 -m pip install -U pip (安装pip)
[root ~]# ln -s /usr/local/python37/bin/pip /usr/bin/pip3 (给pip指令创建快捷方式pip3)
[root ~]# pip3 —version

运行redis服务之前的一些常见命令

命令 & ---> 将命令放到后台运行
jobs ---> 查看后台运行的命令
fg %编号 ---> 将后台命令放到前台运行
Ctrl+z ---> 将前台命令暂停并放到后台
bg %编号 ---> 将暂停的命令在后台运行
redis-server >> redis.log & --->后台启动服务器输出重定向
netstat -ntlp --->查看程序端口 (常用端口 1024-65535 ,1024以下为著名端口)
(3306/6379---项目中一般不公开,容易被劫持挖矿)
redis-sever --requirepass 口令 >> redis.log & 后台启动redis并加口令
redis-server >> redis.log & --->后台启动服务器输出重定向
netstat -ntlp --->查看程序端口 (常用端口 1024-65535 ,1024以下为著名端口)
(3306/6379---项目中一般不公开)
redis-sever --requirepass 口令 >> redis.log & 后台启动redis并加口令
修改端口 --port 端口号:


修改端口 --port 端口号:

查看Redis进程
ps -ef | grep -E "redis-server"

一行代码杀进程:

ps -ef | grep -E "redis-server" | grep -v "grep" |awk '{print $2}' |xargs kill

1.启动 redis 客户端,打开终端并输入命令 redis-cli。该命令会连接本地的 redis 服务。

$redis-cli
redis 127.0.0.1:6379>
redis 127.0.0.1:6379> PING
redis-cli -p 端口 -h 主机

2.一些简单命令

set username luohao ex 120 ---> 添加键值对
get username ---> 通过键查找值
ttl username ---> 查看键过期时间
expire username 300 ---> 设置键过期时间
keys * ---> 查看所有键
dbsize ---> 查看数据库大小(键值对数量)

redis的核心数据类型:

1. 字符串
set key value ---> 添加键值对
get key ---> 通过键查看值
strlen key ---> 获取字符串长度
append key value2 ---> 给字符串追加内容
mset key1 value1 key2 value2 ---> 添加多组键值对
mget key1 key2 ---> 查看多个键对应的值
incr key ---> 值加1
incrby key value ---> 值加上value
decr key ---> 值减1
decrby key value ---> 值减去value
getrange key start end ---> 获取字符串指定范围的子串
setrange key offset value ---> 修改字符串指定位置的内容
2. 哈希(表) - hash
hset key field value ---> 添加hash类型键值对
hmset key field1 value1 field2 value2 ---> 添加多组hash类型键值对
hget key field ---> 获取hash类型字段对应的值
hmget key field1 field2 ---> 获取hash类型多个字段对应的值
hgetall key ---> 获取hash类型所有的字段和对应的值
hkeys key ---> 获取hash类型所有的字段
hvals key ---> 获取hash类型所有字段的值
hexists key field ---> 判断hash类型某个字段是否存在
3. 列表 - list
lpush key value1 value2 value3 ---> 在左边添加元素
rpush key value1 value2 value3 ---> 在右边添加元素
lpop key ---> 从左边移除一个元素
rpop key ---> 从右边移除一个元素
lrange key start end ---> 查看列表指定范围的元素
llen key ---> 查看列表元素个数
lindex key index ---> 查看列表指定位置元素
lrem key count value ---> 删除列表中指定元素
4. 集合 - set
sadd key value1 value2 value3 ---> 添加元素
srem key value ---> 删除元素
spop ---> 获取随机元素
scard key ---> 查看元素个数
smembers key ---> 查看所有元素
sismember key value ---> 查看集合中有没有指定元素
sinter key1 key2 ---> 交集
sunion key1 key2 ---> 并集
sdiff key1 key2 ---> 差集
5. 有序集合 - zset
zadd key score1 mem1 score2 mem2 ---> 添加元素
zrem key mem ---> 删除元素
zrange key start end ---> 按score的升序查看元素
zrevrange key start end ---> 按score的降序查看元素
zscore key mem ---> 查看元素对应的score
zincrby key value mem ---> 修改元素的score值

LBS应用 - Location-Based Service - 基于位置的服务

Linux系统启停服务
~ 启动:systemctl start nginx
service nginx start
~ 停止:systemctl stop nginx
service nginx stop
~ 重启:systemctl restart nginx
~ 查看状态:systemctl status nginx
~ 开机自启:systemctl enable nginx
~ 禁用自启:systemctl disable nginx

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 199,393评论 5 467
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 83,790评论 2 376
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 146,391评论 0 330
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 53,703评论 1 270
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 62,613评论 5 359
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,003评论 1 275
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,507评论 3 390
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,158评论 0 254
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,300评论 1 294
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,256评论 2 317
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,274评论 1 328
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 32,984评论 3 316
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,569评论 3 303
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,662评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,899评论 1 255
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,268评论 2 345
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 41,840评论 2 339

推荐阅读更多精彩内容